Method and system for processing positioning signals based on predetermined message data segment

ABSTRACT

A method and system for determining a geolocation of an object includes collecting a positioning signal including a predetermined message data segment. A time of arrival of the predetermined message data segment may be determined in the positioning signal. Information based on the time of arrival may be provided for determination of a geolocation of an object. The time of arrival of the predetermined message data segment may be determined based on a time search for the predetermined message data segment in the positioning signal.

RELATED APPLICATIONS

This application is a divisional application of U.S. application Ser.No. 13/356,218 and now U.S. Pat. No. 9,052,374, which is acontinuation-in-part application of U.S. application Ser. No. 12/637,466and now U.S. Pat. No. 8,102,312, which is a continuation of U.S.application Ser. No. 11/615,070 and now U.S. Pat. No. 7,633,439, whichis a continuation of U.S. application Ser. No. 11/083,392 and now U.S.Pat. No. 7,154,437, which is a divisional of U.S. application Ser. No.10/445,232 and now U.S. Pat. No. 6,882,309, which is acontinuation-in-part of U.S. application Ser. No. 09/908,011 and nowU.S. Pat. No. 6,628,234 and also claims the benefit of U.S. ProvisionalApplication No. 60/383,353, all of which are hereby incorporated hereinby reference.

TECHNICAL FIELD OF THE INVENTION

This invention relates generally to the field of geolocation and moreparticularly to a method and system for processing positioning signalsbased on a predetermined message data segment.

BACKGROUND OF THE INVENTION

In the application of global positioning system (GPS) technology to thegeolocation of wireless devices, a typical geolocation function utilizesa course acquisition (C/A) code, or Gold code, which is receivedrepeatedly from GPS satellites, in order to determine position. Inaddition to the repeated Gold code sequence, the Gold code comprisessatellite message data that is modulated on top of the Gold code signalby inverting the phase according to the message data.

The spectral density level of a signal from a GPS satellite received ata conventional GPS receiver with a direct line-of-sight to the satelliteis significantly less than the thermal noise level of the conventionalGPS receiver. When satellite signals are received at wireless devicesbeing operated with obstructed views of the sky and thus obstructedline-of-sight, the satellite signals are weakened even further.Consequently, the obstructed signal levels from satellites are generallywell below the threshold at which receivers may receive reliable messagedata signals from the satellites.

Recent solutions to the problem of receiving weakened positioningsignals provide for partitioning the geolocation processing functionssuch that some of these functions are performed at the unknown locationwhich is to be determined and other functions are performed at alocation with an unobstructed view of the signal source.

For example, one of these methods, using a satellite signal source,provides for measuring all the satellite signal parameters, includingthe Doppler shift for each satellite signal, at unobstructed receiverslocated near the unknown location. The unobstructed receivers then sendpertinent data to the unknown location to allow pseudorange estimationto be completed at the unknown location.

Disadvantages associated with this example include a relativelyexpensive requirement of integration of the network of such receiverswith the wireless carrier network that provides a link between theunknown location and the unobstructed receivers. In addition, thissolution restricts the joint operation of the unknown location and theunobstructed receivers in performing the geolocation processingfunctions to only those carrier networks that are so integrated.

SUMMARY OF THE INVENTION

The present invention provides a method and system for processingpositioning signals based on a predetermined message data segment. Apositioning signal is any signal that may be used, either alone or inconjunction with other signals, for the purpose of determining thelocation of an object. A positioning signal is an identification codethat is unique to and/or uniquely identifies the transmitter and that isrepeated by the transmitter. In one embodiment, the positioning signalmay have a fixed transmission time duration or epoch duration.

A predetermined message data segment is any combination of known bitscontained within the carrier signal. Bits are known when the value,modulation, sign or other characteristic of the bit, or the manner bywhich the modulation, sign or characteristic is changed, is constant,may be predicted and/or may be otherwise determined based on a knowncalculation or logic, before the signal sample that is comprised of suchbits is stacked during processing or without decoding the signal. Theknown bits may be or may not be contiguous. The predetermined messagedata segment may have one or more message data bit sequences each havingone or more contiguous known bits. In one embodiment the known bits maybe contained in the carrier signal by a biphase modulation. It isunderstood that the positioning signals may be transmitted by anysuitable types of fixed or mobile transmitters, including satellitetransmitters such as the global positioning system (GPS) satellites, orterrestrial transmitters.

This invention may substantially eliminate or reduce disadvantages andproblems associated with previous systems and methods. In a particularembodiment, the time to estimate a pseudorange from received positioningsignals is reduced, while the processing gain is increased to facilitaterapid detection of positioning signals while limiting the consumption ofenergy.

In accordance with one embodiment of the present invention, a method forprocessing positioning signals in a ranging receiver in a stand-alonemode is provided. In this and other embodiments, the method maydetermine a geolocation of an object by collecting a positioning signalincluding a predefined message data segment. A time of arrival of thepredefined message data bit segment may be determined in the positioningsignal. Information based on the time of arrival may be provided fordetermining the geolocation of the object.

In another embodiment, a plurality of positioning signals each includinga predefined message data segment may be collected. The time of arrivalof the predetermined message data segment in each of the positioningsignals may be determined. A time difference of arrival may bedetermined based on the times of arrival. In this embodiment,information based on the time difference of arrival may be provided fordetermination of the geolocation of the object.

In a particular embodiment, the method may include collecting samplesfrom positioning signals received at the ranging receiver from aplurality of satellites. The samples comprise message data modulation.The method selects a predetermined segment of the message data to beidentified in the samples to be collected, and creates a replica of thatpredetermined segment. The identification code for each satellitecomprises a Gold code which repeats every epoch of one millisecond.However, it is understood that any other suitable identification codemay be used without departing from the scope of the present invention. Apre-determined carrier frequency offset (CFO) is selected from aplurality of directly extracted CFOs or from CFOs determined bygeometric methods or by other means. The samples, or replicas of theGold codes for the satellites, are compensated for the selected CFO. Asection of the samples is selected that is equal in length to thepredetermined segment. The message data modulation is modified in theselected section of the samples corresponding to the sequence of thebiphase modulation of the predetermined segment. The samples are stackedfor each satellite. The Gold code associated with each satellite iscorrelated to generate a time sequence for the satellite. Adetermination is made regarding whether an adequate correlation peakexists in each pseudorange time sequence. The method is repeated withdifferent sections of the samples, and may be repeated with differentCFOs and Gold codes in order to identify correlation peaks. Apseudorange, range or time-of-arrival are determined for the rangingreceiver based on the correlation peaks when an adequate correlationpeak exists in each time sequence. The samples may, in one embodiment,be pseudorange samples.

Technical advantages of one or more embodiments of the present inventionmay include providing an improved method for processing positioningsignals in a stand-alone mode. In particular, the time required toobtain pseudorange estimates from weakened positioning signals isreduced and the processing gain available in any sample segment used toobtain pseudorange information is increased. In addition, by using adirect extraction method to quickly determine a CFO, resolving theidentity of satellites whose signals are being received, andcompensating the received signal by the amount of the CFO, thepseudorange, range or time-of-arrival estimation may be accomplishedwithout performing a time-consuming search through the Dopplerfrequencies and satellite codes.

Other technical advantages of one or more embodiments of the presentinvention include a geolocation processor that may supply, to areceiver, current fragments of message data that were transmitted duringthe time the receiver was collecting signal samples. This is possiblebecause the geolocation processor and the receiver are able to exchangetime-of-day synchronizing information. As a result, the modulation forthe message data may be removed from the samples being processed by thereceiver. Accordingly, the available processing gain that can beachieved from a signal averaging process may be increased.

Due to the improvement in processing gain, technical advantages of oneor more embodiments of the present invention may also include an abilityeither to obtain greater sensitivity in a given amount of signalprocessing time or to significantly reduce the amount of processing timeto reach a particular level of sensitivity. In this regard, a dynamicprocess may be used that acquires and processes only the amount ofsignal necessary to achieve reliable detection. This reduces both theprocessing time and the amount of intermediate-result memory storagerequired during signal processing.

Yet another technical advantage of one or more embodiments of thepresent invention may include the removal of a requirement to integratea geolocation processing system with the wireless carrier network thatprovides a communication link between the ranging receiver and anassisting function. Thus, the need for, and the costs associated with, awireless carrier or plain old telephone system network may beeliminated. For example, support from a carrier's network may not berequired to determine a coarse position estimation. In addition, asupport network of nearby reference receivers, or its equivalent, wouldnot be required to provide Doppler-shift compensation or Doppler-shiftsearch assistance. An end-to-end frequency-calibration embodiment in thewireless communication link between the receiver and the geolocationprocessor to allow making use of the Doppler-shift would also not berequired.

Yet another technical advantage of one or more embodiments of thepresent invention may include the ability to determine thetime-of-arrival (TOA) at the ranging receiver of specific segments ofthe message data having precisely known transmission times from thesatellite. The TOA corresponds to the propagation time of the signalfrom the satellite and the range between the satellite and the rangingreceiver. The range of the satellite may be represented by themeasurement of the propagation time (or “delay”) of the GPS signal fromthe satellite to the receiver and comprises: (a) a whole number ofmilliseconds (epochs); plus (b) a fraction of an epoch (referred to asthe pseudorange value), which is typically determined to a precision ofabout 100 nanoseconds or less (equivalent to a location precision ofabout 100 feet or less). Conventional GPS receivers only measure thepseudorange portion of the total range delay. They provide no estimateof the number of whole milliseconds of the propagation time, for eachsatellite, that precedes the final “pseudorange” fraction. This isreferred to as “whole number ambiguity” and the navigation algorithms inconventional GPS receivers must resolve the ambiguity by a process ofintelligent guesswork that eliminates those combinations of potentialwhole number values for the in-view satellites that fail to produce a“logical” geolocation solution (i.e. one that is located at, or veryclose to, the surface of the planet). By using the surface of the earthas a reference surface, the geolocation is determined. However, whenthere is no fixed reference surface available, the conventional GPSreceiver cannot determine a location, and therefore cannot be used todetermine a location in open space. The TOA measurement in the presentinvention contains an error equal to the error in the clock of theranging receiver. However, when the difference between such values,known as the time difference of arrival (TDOA), is determined for anypair of satellites, this error is precisely and completely eliminated.In the present invention, the TDOA values may be used, along withconventional TDOA techniques and algorithms to determine the geolocationof the ranging receiver without “whole number ambiguity” phenomena thatmay be encountered when using pseudorange values in conventional GPSprocessing methods.

Yet another technical advantage of one or more embodiments of thepresent invention includes the absence of the necessity to preciselysynchronize the clock of the ranging receiver with the satellitesclocks.

Yet another technical advantage of one or more embodiments of thepresent invention may include the ability to recalibrate the rangingreceiver clock and synchronize it with GPS time.

Yet another technical advantage of one or more embodiments of thepresent invention may include the ability to utilize informationobtained, when a correlation peak is obtained for the first satellite,to reduce the processing required to determine the correlation peaks forother in-view satellites, thereby decreasing the amount of time for alocation estimate.

In addition, technical advantages of one or more embodiments of thepresent invention may include reduced memory use, power consumption andnetwork loading, increased sensitivity, decreased amount of time for alocation estimate, and greater privacy for customers.

It will be understood that some embodiments of the present invention maycontain all, none or some of the above and elsewhere discussedadvantages. In addition, other technical advantages of the presentinvention may be readily apparent from the following figures,description, and claims.

BRIEF DESCRIPTION OF THE DRAWINGS

For a more complete understanding of the present invention and itsadvantages, reference is now made to the following description taken inconjunction with the accompanying drawings, wherein like referencenumerals represent like parts, in which:

FIG. 1 is a block diagram illustrating a geolocation system operable toprocess positioning signals in accordance with one embodiment of thepresent invention;

FIG. 2 is a block diagram illustrating the ranging receiver of FIG. 1 inaccordance with one embodiment of the present invention;

FIG. 3 is a block diagram illustrating the ranging receiver of FIG. 1 inaccordance with another embodiment of the present invention;

FIG. 4 is a flow diagram illustrating a method for obtaining acalibration location estimate for the ranging receiver of FIG. 1, 2 or 3in accordance with one embodiment of the present invention;

FIG. 5 is a flow diagram illustrating a method for obtaining a locationestimate based on a non-initial trigger for the ranging receiver of FIG.1, 2 or 3 in accordance with one embodiment of the present invention;

FIGS. 6A and 6B are flow diagrams illustrating a direct extractionmethod for determining carrier frequency offset in the methods of FIGS.4 and 5 in accordance with one embodiment of the present invention;

FIG. 7 is a flow diagram illustrating a method for determiningpseudorange in the ranging receiver of FIG. 1, 2 or 3 in a stand-alonemode in accordance with one embodiment of the present invention;

FIGS. 8A and 8B are flow diagrams illustrating a method for aligningmessage data to determine a pseudorange in the ranging receiver of FIG.1, 2 or 3 in a stand-alone mode in accordance with one embodiment of thepresent invention;

FIGS. 9A and 9B are block diagrams illustrating a system for generatingsub-stacks and stacks to determine coarse satellite message dataalignment in the system of FIG. 1 in accordance with one embodiment ofthe present invention;

FIG. 10 is a block diagram illustrating a system for refining satellitemessage data alignment in the system of FIG. 1 in accordance with oneembodiment of the present invention;

FIG. 11 is a flow diagram illustrating a method for aligning messagedata in the ranging receiver of FIG. 1, 2 or 3 in accordance with oneembodiment of the present invention;

FIG. 12 is a flow diagram illustrating a method for predicting satellitemessage data received in positioning signals at the ranging receiver ofFIG. 1, 2 or 3 in accordance with one embodiment of the presentinvention;

FIGS. 13A-1, 13A-2, 13B and 13C are flow diagrams illustrating a methodfor determining a pseudorange in the ranging receiver of FIG. 1, 2 or 3in a geometric mode in accordance with one embodiment of the presentinvention;

FIG. 14 is a flow diagram illustrating a method for determininggeolocation in the ranging receiver of FIG. 1, 2 or 3 with matchingassistance in accordance with one embodiment of the present invention;

FIG. 15 is a flow diagram illustrating a method for determininggeolocation in the geolocation processor of FIG. 1 by providing matchingassistance in accordance with one embodiment of the present invention;

FIGS. 16A-B are a flow diagram illustrating a method for determininggeolocation in the ranging receiver of FIG. 1, 2 or 3 by aligningpredetermined message data bit sequences with corresponding segments ofthe received signal in order to determine pseudorange, range or time-ofarrival in the ranging receiver, in accordance with one embodiment ofthe present invention;

FIG. 17 is a flow diagram illustrating a method for synchronizing thetime setting of the clock in the receiver of FIG. 1, 2, or 3 with theGPS time in the satellite clocks.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1 is a block diagram illustrating a remote geolocation system 10 inaccordance with one embodiment of the present invention. The system 10may comprise a global positioning system (GPS), a global navigationsatellite system (GLONASS), or other suitable navigation system.

The system 10 comprises a plurality of positioning signal transmitters12 and at least one ranging receiver 14. The positioning signaltransmitters 12 are operable to transmit positioning signals, and eachranging receiver 14 is operable to receive the positioning signals andto perform geolocation processing functions in order to determine apseudorange estimate for the ranging receiver 14 based on the receivedsignals. As used herein, “each” means every one of at least a subset ofthe identified items. In the illustrated embodiment, the positioningsignal transmitters 12 comprise satellites 12. Thus, as used herein,“satellites” means conventional satellites, pseudolites, or othersuitable positioning signal transmitters.

As described in more detail below, a location estimate, or geolocation,may be determined for the ranging receiver 14 based in part on thepseudorange estimate. According to one embodiment, a location estimateprovides a location for the ranging receiver 14 that is accurate towithin 10 to 50 meters or other suitable distance.

A location estimate may be determined when the ranging receiver 14 isreceiving weakened positioning signals, such as signals weakened byobstructions. Weakened positioning signals comprise signals that arereceived from the satellites 12 at levels that result in insufficientinformation being received by the ranging receiver 14, in the absence ofother satellite signals or other sources of information, to determine alocation estimate but sufficient information being received to estimatea pseudorange for the ranging receiver 14. According to one embodiment,weakened positioning signals comprise signals compromised up to 16 dBbelow “clear view”, or unobstructed, signal levels. In an alternativeembodiment, weakened positioning signals comprise signals compromised upto 30 dB below “clear view” signal levels.

The system 10 also comprises a wireless device 16 and a service center18 which may be coupled to each other through a wireless carrier network20 and the plain old telephone system (POTS) network 22. In addition,the system 10 comprises a geolocation processor 24, which may be coupledto the service center 18 either directly or indirectly, such as througha network or other suitable form of indirect communication and may becoupled through the service center 18 to the wireless device 16.Although the illustrated embodiment includes one service center 18 andone geolocation processor 24, it will be understood that the system 10may comprise any suitable number of the components 18 and 24 withoutdeparting from the scope of the present invention and that functionalityof the system 10 may be otherwise suitably distributed or combined. Itwill be further understood that a single geolocation processor 24 may becoupled to a plurality of service centers 18 without departing from thescope of the present invention.

The wireless device 16 may be coupled to the ranging receiver 14, whichmay comprise push buttons 30, or other suitable interfaces, for useroperation such as to initiate a location estimating process for theranging receiver 14. The wireless device 16 is operable to provide acommunication link between the ranging receiver 14 and a service center18 via the wireless carrier network 20 and the POTS network 22 and toprovide a communication link between the ranging receiver 14 and ageolocation processor 24 via the service center 18.

The wireless device 16 may comprise a cellular telephone, a wirelessPersonal Digital Assistant, a two-way or response pager, a private orcommercial vehicle tracking system, an “On-Star” type motorist servicenetwork, a private or commercial wireless data network (or a device insuch a network), or any other suitable device capable of providing adata-link between the ranging receiver 14 and the geolocation processor24.

The wireless device 16 may be coupled to the ranging receiver 14 in anysuitable fashion. For example, the wireless device 16 and the rangingreceiver 14 may be coupled together by a cable 32. Alternatively, theranging receiver 14 may be located near the wireless device 16 andlinked to the wireless device 16 by a low-powered short-range wirelesslink, such as those provided by the Blue-Tooth protocols. The rangingreceiver 14 may also be coupled to the body of the wireless device 16 asa “stick-on” attachment, or the ranging receiver 14 may be built into areceptacle such that the wireless device 16 is in electrical contactwith the ranging receiver 14 when the wireless device 16 is insertedinto the receptacle.

In another alternative, the ranging receiver 14 may be integrated withthe wireless device 16. For this embodiment, the wireless device 16 isoperable to process communication at a minimum of two frequencies, onefrequency for receiving signals to be processed by the wireless device16 independently of the functionality of the ranging receiver 14, suchas cellular signals for a wireless device 16 comprising a cellulartelephone, and a second frequency for receiving positioning signals. Thewireless device 16 is also operable to digitize samples at a ratecorresponding to the rate at which the ranging receiver 14 may processsamples in accordance with the present invention. For example, thewireless device 16 may be operable to digitize samples at a rate of atleast 2.048 Megasamples/second at a quantizer resolution of a minimum oftwo bits. It will be understood that other suitable rates may be used,as described in more detail below in connection with FIG. 2. Inaddition, the wireless device 16 may include additional memory, ascompared to a wireless device 16 not coupled to a ranging receiver 14,in order to store samples for processing during pseudorange estimation.

The service center 18 may comprise a Public Safety Access Point (PSAP),a Vehicle Dispatch Application, or other suitable entity capable offacilitating geolocation processing for the ranging receiver 14 bycoupling the ranging receiver 14 to the geolocation processor 24. Theservice center 18 is also operable to manage the detection, routing andswitching of voice traffic that may be associated with the geolocationdetermination process.

The service center 18 includes a rack 45 of modems 40, a switch 42, andat least one telephone handset 44. Each modem 40 may include a LocationServices Protocol modem or other suitable modem and is operable toprovide a communication link between the service center 18 and theranging receiver 14 associated with the wireless device 16 through thePOTS network 22 and the wireless carrier network 20. The modem 40, orother communication link such as an Ethernet, may also provide a linkbetween the service center 18 and the geolocation processor 24. Eachmodem 40 is also operable to route voice communication to the switch 42and data communication to the geolocation processor 24. The switch 42 isoperable to route voice communication from a modem 40 to a telephonehandset 44 and from a telephone handset 44 to a modem 40. The telephonehandset 44 allows an operator at the service center 18 to interact witha user of the wireless device 16 through voice communication providedthrough a modem 40.

The geolocation processor 24 is operable to identify the satellites 12by matching the differences between pairs of carrier frequency offsetsmeasured at the ranging receiver 14 with the differences between pairsof Doppler shift estimates made of satellites in view at particularlocations on the Earth's surface, to accurately calibrate a real-timeclock in the ranging receiver 14, to track satellite message data fromthe satellites 12 and bit transition times in the satellite messagedata, to provide fragments of the satellite message data from theidentified satellites 12 to the ranging receiver 14, to convert apseudorange estimate from the ranging receiver 14 into a geolocation ofthe ranging receiver 14, and to provide the geolocation to a requestersuch as the ranging receiver 14 or PSAP operator.

However, it will be understood that the ranging receiver 14 mayalternatively perform operations that are operable by the geolocationprocessor 24 without departing from the scope of the present invention.

The geolocation processor 24 comprises a workstation 46 and a receiver48. The workstation 46 is operable to perform geolocation processingfunctions. The workstation 46 is also operable to obtain currentephemeris, time, and other suitable satellite message data from thereceiver 48. Ephemeris data may comprise trajectory data received fromone or more satellites 12 that allows positions of satellites in thesatellite constellation to be predicted. The receiver 48 may comprise aGPS receiver or other suitable receiver operable to receive positioningsignals from the satellites 12.

The wireless carrier network 20 may be operable to coordinate locationmanagement, authentication, service management, subscriber management,and any other suitable functions for a plurality of wireless devices 16.The wireless network 20 may comprise a public land mobile network orother suitable network operable to provide communication between thewireless devices 16 and the POTS network 22.

The POTS network 22 may be coupled to the wireless carrier network 20and to the service center 18 through communication links 50. Thecommunication links 50 may be any type of communication link capable ofsupporting data transfer. In one embodiment, each of the communicationlinks 50 may comprise, alone or in combination, Integrated ServicesDigital Network, Asymmetric Digital Subscriber Line, T1 or T3communication lines, hard-wire lines, telephone lines or wirelesscommunication. It will be understood that the communication links 50 maycomprise other suitable types of data communication links. Thecommunication links 50 may also connect to a plurality of intermediateservers between the POTS network 22 and both the wireless carriernetwork 20 and the service center 18.

The system 10 may also comprise one or more remote receivers 60, servicerequesters 62 and/or application servers 64 which may be coupled to thegeolocation processor 24 through a data network 66. The remote receiver60 may comprise a GPS receiver or other suitable receiver operable toreceive positioning signals from the satellites 12. Data derived fromthese positioning signals may then be provided to the geolocationprocessor 24 through the data network 66. According to one embodiment,the system 10 comprises three remote receivers 60 spaced around theEarth such that, at any given time, the three remote receivers 60 mayreceive ephemeris data from each satellite in the constellation.

The service requester 62 may comprise a location information requesterthat is operable to generate a request for a location estimate for aparticular ranging receiver 14 and to provide the request to theapplication server 64 through the data network 66. The applicationserver 64 may comprise a location-based server or other suitable serverthat is operable to receive the request generated by the servicerequester 62 and to process the request.

In processing the request, the application server 64 is operable toprovide the request to the geolocation processor 24 through the datanetwork 66, prompting the geolocation processor 24 to initiate alocation estimating process for the ranging receiver 14 identified bythe service requester 62 in the request. In addition, the applicationserver 64 is operable to receive a resulting location estimate from thegeolocation processor 24 through the data network 66 and to provide thelocation estimate to the service requester 62 through the data network66.

The data network 66 may comprise a public switched telephone network, anintegrated services digital network, a local area network, a wide areanetwork, a global computer network, such as the Internet or otherdedicated switched network, or other communication system or combinationof communication systems at one or more locations. According to oneembodiment, any of the networks 20, 22 and 66 may share a same physicalimplementation with one or both of the other networks 20, 22 and 66.

Because the Doppler frequency shifts are continuously changing due tothe movement of the Earth and of the satellites 12, the workstation 46may be operable to regularly re-compute the pattern of Doppler frequencyshifts of satellites 12 based on the changing satellite positions foruse in satellite identification by Doppler frequency shift differences,as described in more detail below. The workstation 46 is also operableto track the satellite message data modulated on top of the Gold coderanging signal transmitted by each of the satellites 12 and to track thetransition times of the satellite message data bit boundaries.

The satellites 12 comprise satellites of a navigational satelliteconstellation that are in view of the ranging receiver 14 and/or otherreceivers 48 and 60 at a particular time and that are operable totransmit positioning signals, such as navigation and ranging signals. Itwill be understood that the in-view satellites 12 of the satelliteconstellation continually change due to orbital movement of thesatellites and rotational movement of the Earth. According to oneembodiment, the system 10 comprises at least four satellites 12 at anyparticular time.

The ranging receiver 14, the service center 18, and the geolocationprocessor 24 may comprise logic encoded in media. The logic comprisesfunctional instructions for carrying out program tasks. The mediacomprises computer disks or other computer-readable media,application-specific integrated circuits, field-programmable gatearrays, digital signal processors, other suitable specific orgeneral-purpose processors, transmission media or other suitable mediain which logic may be encoded and utilized.

In operation for a particular embodiment, the service center 18 providesdata communication between the ranging receiver 14 and the geolocationprocessor 24 to allow the ranging receiver 14 to generate a pseudorangeestimate and the geolocation processor 24 to generate a geolocation. Inaddition, the service center 18 provides voice communication between auser of the wireless device 16 and an operator at the service center 18.The service center 18 may manage emergency services, vehicle-dispatchingservices, or other suitable services which utilize geolocationprocessing to locate wireless devices 16. An operator at the servicecenter 18 monitors and manages emergency calls, communications withvehicles via wireless devices 16, or other suitable communications.

The receiver 48 receives positioning signals from the satellites 12 andprocesses these signals. The workstation 46 determines the location of awireless device 16 based on the signals received at the receiver 48 andbased on information exchanged with the ranging receiver 14 via thewireless device 16 and the service center 18.

The telephone handset 44 allows an operator at service center 18 to callthe wireless device 16 or to respond to an incoming call from thewireless device 16. Calls to the wireless device 16 may also beinitiated by the workstation 46 via a modem 40. Each modem 40 providesdata exchange capability with the ranging receiver 14 via the wirelessdevice 16 over the same voice channel used by a caller to speak to theoperator at the service center 18. According to one embodiment, eachmodem 40 also provides time-exchange facility with the ranging receiver14 over the voice channel.

The process may begin by an exchange of time signals between the rangingreceiver 14 and the geolocation processor 24 to establish a real time atthe ranging receiver 14. This time is used to coordinate the use offurther time-critical information to be exchanged between the rangingreceiver 14 and the geolocation processor 24. While this time exchangeis taking place between the ranging receiver 14 and the geolocationprocessor 24, the ranging receiver 14 may begin collecting anddecimating satellite signal samples received from the satellites 12 fora carrier frequency estimating process. It will be understood that, inaccordance with one embodiment of the present invention, the rangingreceiver 14 may be operable to determine real time for geolocationprocessing from the positioning signals without exchanging time signalswith the geolocation processor 24.

A direct method for quickly estimating the received carrier frequencyfor each of the satellites 12, including those of which the rangingreceiver 14 has an obstructed view, may be used. According to oneembodiment, this method uses signal squaring to remove the biphasemodulation and uses narrow-band filtering to reduce the noise. In oneembodiment, at least two bits per signal sample and a final stage ofdown-conversion to near baseband by a heterodyne step are used.

The received carrier frequency estimates include the down-conversionfrequency uncertainty due to local oscillator manufacturing tolerances,thermal drift and/or other conditions, thereby providing a substantiallyexact frequency that may be applied to compensate for the Dopplerfrequency shift and these other errors, even over the long periods ofsignal averaging needed to reach the required sensitivity for successfulsignal detection.

In one embodiment of the invention, this direct determination of thereceived carrier frequencies to high resolution (within about one Hz fora one second sampling of the signals received from the satellites 12)allows the identity of satellites 12 contributing the specific patternof Doppler-frequency differences, which are equal to the carrierfrequency offset (CFO) differences, to be determined by a pattern matchbetween the Doppler differences computed for the current positions ofthe satellites in the constellation and target matching patches on thesurface of the Earth. This may be accomplished by sending the CFOresults to the geolocation processor 24 as soon as they are determinedby the ranging receiver 14, along with the time corresponding to thebeginning of the collection of the signal samples from which the CFOswere determined. The ranging receiver 14 then continues collecting andstoring samples of the signal that are suitable for estimatingpseudorange.

While the signal samples for pseudorange estimation are being collected,the geolocation processor 24 identifies the satellites 12 that are inview at the unknown location and, for each of these satellites 12,extracts that portion of the satellite message data that is beingtransmitted during sample collection. The geolocation processor 24 mayalso identify the actual Doppler-shift frequency to be used in thetime-dilation correction, as described in FIG. 13C. Time-dilation isproportional to the total accumulated Doppler frequency shift. Thegeolocation processor 24 then transmits to the ranging receiver 14 asatellite ID for each identified satellite 12 to enable rapidcomputation of pseudorange without searching through Doppler frequenciesand satellite codes and transmits the satellite message data fragment toenable removal of the data modulation from the signals so that linearsummation may be performed for increased processing gain.

Also while the ranging receiver 14 is collecting signal samples forpseudorange estimation, the ranging receiver 14 begins processing thesignals for the pseudorange content.

FIG. 2 is a block diagram illustrating the ranging receiver 14 inaccordance with one embodiment of the present invention. The rangingreceiver 14 is a mobile device that may be easily transported from onelocation to another. In the illustrated embodiment, the ranging receiver14 is coupled to a wireless device 16 that comprises a digital cellulartelephone. However, as described in more detail above in connection withFIG. 1, the wireless device 16 may comprise any suitable device capableof wireless communication.

The ranging receiver 14 comprises an antenna 202 that is capable ofreceiving positioning signals. According to one embodiment, the antenna202 comprises a GPS antenna that is capable of receiving GPS signals.For this embodiment, the antenna 202 may comprise a circularly polarizedceramic patch antenna or other suitable antenna. The antenna 202 iscoupled to a filter and low-noise amplifier 204.

In one embodiment, the filter and low-noise amplifier 204 is operable tolimit bandwidth to approximately 2 MHz (centered at 1575.42 MHz).Alternatively, the filter and low-noise amplifier 204 may be operable tolimit bandwidth to approximately 1 MHz or to another suitable bandwidthless than 2 MHz. In this way, the signal-to-noise ratio may be improvedas compared to a signal with a bandwidth of approximately 2 MHz. Forexample, for the embodiment in which the bandwidth is limited toapproximately 1 MHz, a gain of about 3 dB made be obtained with a lossof about 50% of the noise and only about 10% of the signal.

The filter and low-noise amplifier 204 is coupled to a down-converter206. The down-converter 206 is operable to down-convert the signal tobaseband. According to one embodiment, the down-converter is operable todown-convert the signal using multiple stages of amplification,filtering and super-heterodyning. The down-converter 206 may comprise aradio frequency/intermediate frequency (RF/IF) down-converter or othersuitable down-converter.

An automatic gain control 208 is coupled to the down-converter 206 andto an amplifier 210. The automatic gain control 208 controls the stagesof amplification for the down-converter 206. The amplifier 210, which isalso coupled to the down-converter 206, amplifies the signal from thedown-converter 206 based on a control signal from the automatic gaincontrol 208.

An analog-to-digital converter 212 is coupled to the amplifier 210 andto the automatic gain control 208. The analog-to-digital converter 212comprises a symmetrical multi-bit quantizer that is operable to digitizeanalog signals from the down-converter 206. The analog-to-digitalconverter 212 is symmetrical in order to reduce the generation ofunnecessary harmonic products that may cause alias products in the bandof the desired signal.

For example, the analog-to-digital converter 212 may digitize thesignals at a minimum of 2.048 Megasamples/second and at a quantizerresolution of a minimum of two bits. Alternatively, theanalog-to-digital converter 212 may digitize the signals at a minimum of4.096 or 8.192 Megasamples/second, in order to improve pseudorangetiming resolution, and then further into four or more bits, in-phase andquadrature-phase (I/Q) samples, in order to improve both frequency andamplitude resolution and to reduce the generation of harmonic productsdue to the inherent non-linearity of the quantizing process.

Symmetry may be ensured by biasing the quantizer levels such that zerocrossing takes place in the center of the first quantizer level,allowing equal statistical representation of the signal in the positiveand negative segments. This is especially useful for small numbers ofbits of resolution.

An output of the analog-to-digital converter 212 controls the automaticgain control 208, which feeds back to the amplifier 210 and thedown-converter 206 as described above. This may be used to ensure that,on average, the quantized signal reaches maximum quartile less than 30%of the time, which is consistent with the expected statistics ofnoise-like signals. However, it will be understood that this output ofthe analog-to-digital converter 212 may be used to ensure that thequantized signal reaches maximum quartile less than any suitablepercentage of the time.

The ranging receiver 14 also comprises a local oscillator and timinggenerator 214 that is coupled to the down-converter 206 and to theanalog-to-digital converter 212. The local oscillator and timinggenerator 214 may comprise a temperature-compensated crystal oscillator(TCXO), a digitally-compensated crystal oscillator (DCXO), or othersuitable oscillator operable to drive a digital device. Various timingsignals may be derived from the local oscillator and timing generator214, such as frequencies for the various stages of down-conversion forthe down-converter 206, the sampling clock for the analog-to-digitalconverter 212, and other suitable timing signals.

A signal sample memory 216 is coupled to the analog-to-digital converter212. The signal sample memory 216 is operable to temporarily storedigital signal samples from the analog-to-digital converter 212. Forexample, the signal sample memory 216 may comprise a random accessmemory (RAM) or other suitable data store.

The ranging receiver 14 also comprises a digital signal processor 218that is coupled to the signal sample memory 216. The digital signalprocessor 218 comprises a processor operable to process storedinstructions. For example, the digital signal processor 218 may comprisea Motorola DSP 56654 manufactured by MOTOROLA, INC. of Schaumburg, Ill.,a Texas Instruments TMS 320VCSSIO manufactured by TEXAS INSTRUMENTS ofDallas, Tex., an ADSP 21161 SHARC DSP manufactured by ANALOG DEVICES ofNorwood, Mass., or other suitable processor.

A receiver memory 220 is coupled to the digital signal processor 218.The receiver memory 220 is operable to store instructions and other datafor the digital signal processor 218. The receiver memory 220 maycomprise a plurality of program and working memories, which may compriseany suitable combination of read-only memories (ROMs), RAMS, and othersuitable data stores. It will be understood that the receiver memory 220may also comprise the signal sample memory 216.

A modem function 222 is coupled to the digital signal processor 218 andis operable to provide an interface through which communication may beprovided between the digital signal processor 218 and the wirelessdevice 16 and ultimately with a geolocation processor 24 through thewireless carrier network 20, the POTS network 22, and a service center18.

Signal lines 224 and 226 couple the wireless device 16 to the modemfunction 222 and to the digital signal processor 218. According to theillustrated embodiment, the signal lines 224 and 226 are coupled to anexternal component 228 of the wireless device. It will be understood,however, that the signal lines 224 and 226 may be otherwise coupled tothe wireless device 16 based on which embodiment of the ranging receiver14 is implemented, as described above in connection with FIG. 1. Forexample, for the embodiment in which the ranging receiver 14 is anintegral component of the wireless device 16, the signal lines 224 and226 may comprise internal connections within the wireless device 16which need not be coupled to an external component 228.

The ranging receiver 14 also comprises power management circuitry 230that is coupled to the digital signal processor 218. The powermanagement circuitry 230 may comprise one or more batteries or othersuitable power sources. The power management circuitry 230 is operableto provide power to the ranging receiver 14 and to control theavailability of power on the basis of control signals on the signallines 224 and 226 from the wireless device 16 and/or other suitablecontrol signals. The ranging receiver 14 also comprises a real-timeclock 232 that is operable to be calibrated to a remote clock across awireless link or based on satellite message data.

FIG. 3 is a block diagram illustrating the ranging receiver 14 inaccordance with another embodiment of the present invention. In theillustrated embodiment, an integrated device 250 comprises the functionof a ranging receiver 14 integrated with a wireless device 16 thatcomprises a digital cellular telephone. However, as described in moredetail above in connection with FIG. 1, the wireless device 16 maycomprise any suitable device capable of wireless communication.

The integrated device 250 comprises an antenna 252 that is capable ofreceiving positioning signals. According to one embodiment, the antenna252 comprises a GPS antenna that is capable of receiving GPS signalsfrom the satellites 12. For this embodiment, the antenna 252 maycomprise a circularly polarized ceramic patch antenna or other suitableantenna. The integrated device 250 also comprises an antenna 254 that isoperable to communicate with a base station 256. Thus, for the digitalcellular telephone embodiment, the antenna 254 is capable of receivingand transmitting cellular communication signals.

The antenna 252 is coupled to a positioning signal (“PS”) preselectfilter 260, and the antenna 254 is coupled to a cellular signalpreselect filter 262. The output from each of the filters 260 and 262 iscoupled to a signal selection switch 264.

The signal selection switch 264 is operable to select either thepositioning signals or the cellular communication signals for processingby the integrated device 250. The output of the signal selection switch264, which corresponds to the output of the filter 260 or 262 selectedby the switch 264, is coupled to additional cell phone circuitry 266.The additional cell phone circuitry 266 is operable to processpositioning signals as described above in connection with FIG. 2 and toprocess cellular communication signals in a manner similar to a standardwireless device 16 without an integrated ranging receiver 14.

FIG. 4 is a flow diagram illustrating a method for obtaining an initialcalibration location estimate based on an initial trigger for theranging receiver 14 in accordance with one embodiment of the presentinvention. The method begins at step 400 where the ranging receiver 14detects an initial trigger.

A trigger may comprise a request generated by the wireless device 16automatically, a request generated by a user of the wireless device 16such as by pushing a button 30 on the ranging receiver 14, a requestfrom an external source such as the Internet, a geolocation processor 24or other suitable external source, or any other suitable trigger. Theinitial trigger detected in step 400 may comprise, for example, atrigger that is automatically generated in response to turning on thewireless device 16 that is coupled to the ranging receiver 14. Inaddition, as described in more detail below, the initial trigger maycomprise a trigger that is automatically generated after a previousinitial trigger was followed by an unsuccessful attempt to obtain acalibration location estimate.

At decisional step 402, a determination is made regarding the status ofa superframe in the ranging receiver 14. According to one embodiment,the superframe comprises 25 frames, each of which further comprises fivesubframes. The superframe comprises 37,500 bits, which are transmittedfrom the satellites 12 at 50 bits per second. Each of the 25 framescomprises a 1500-bit message that includes timing, identification, andephemeris data, along with portions of the constellation's almanac dataand various telemetry, checksum, and counterwords for each satellite 12.

Changes in the message relating to updates to the ephemeris and almanacdata occur at infrequent intervals, usually between four and 24 hours,and affect only a small portion of the message for each update.Therefore, if the superframe in the ranging receiver 14 is relativelycurrent, the message in that superframe may be used by the rangingreceiver 14.

If no superframe is present in the ranging receiver 14 or if thesuperframe is expired, the method follows the Expired branch fromdecisional step 402 to step 404. The superframe may be consideredexpired if the superframe is greater than 96 hours old. However, it willbe understood that the superframe may be considered expired based onanother suitable amount of time or other suitable criteria withoutdeparting from the scope of the present invention. At step 404, theranging receiver 14 downloads the superframe from the satellites 12 orfrom the geolocation processor 24.

If the superframe in the ranging receiver 14 is not current, the methodfollows the Not Current branch from decisional step 402 to step 406. Thesuperframe may be considered not current if the superframe is between 4and 96 hours old. However, it will be understood that the superframe maybe considered not current based on another suitable amount of time orother suitable criteria without departing from the scope of the presentinvention.

At step 406, the ranging receiver 14 downloads an update to thesuperframe from the satellites 12 or from the geolocation processor 24.Any data obtained from the geolocation processor 24 in steps 404 or 406may be obtained over the voice channel using the modems 40 or via analternate pathway using, for example, a control channel for the wirelesscarrier network 20 or other suitable data pathway.

Returning to decisional step 402, if the superframe in the rangingreceiver 14 is current, the method follows the Current branch fromdecisional step 402 to decisional step 408. Also, after a superframe hasbeen downloaded in step 404 or an update has been downloaded in step406, the method continues to decisional step 408. The superframe may beconsidered current if the superframe is less than 4 hours old. However,it will be understood that the superframe may be considered currentbased on another suitable amount of time or other suitable criteriawithout departing from the scope of the present invention.

At decisional step 408, a determination is made regarding whether or nota fresh calibration location estimate is available. According to oneembodiment, a fresh calibration location estimate comprises a locationestimate that has been performed within the past ten minutes. However,it will be understood that a calibration location estimate may beconsidered fresh after any suitable period of time or based on othersuitable criteria without departing from the scope of the presentinvention.

If no fresh calibration location estimate is available, the methodfollows the No branch from decisional step 408 to step 410. At step 410,the location circuitry of the ranging receiver 14 is turned on. Thus,for example, the power management circuitry 230 may provide full powerto each of the components 204, 206, 208, 210, 212, 214, 216, 218, 220and 222. At step 412, the ranging receiver 14 begins collecting samplesfor CFO extraction and attempts to perform CFO extraction based on thecollected samples.

At decisional step 414, a determination is made regarding whether or notthe CFO extraction was successful. If the CFO extraction was successful,the method follows the Yes branch from decisional step 414 to step 416.At step 416, the ranging receiver 14 enters a stand-alone mode forpseudorange estimation. At step 418, the ranging receiver 14 estimatespseudorange. According to one embodiment, the ranging receiver 14estimates pseudorange in accordance with the method of FIGS. 7 and 8.

At decisional step 420, a determination is made regarding whether or notthe real-time clock 232 has the current time. If the real-time clock 232does not have the current time, the method follows the No branch fromdecisional step 420 to step 422.

At step 422, the real-time clock 232 for the ranging receiver 14 iscalibrated, or synchronized, to a standardized time of day (TOD), suchas GPS time, across the wireless link or to the TOD information receivedin the positioning signals. Once calibrated, the real-time clock 232keeps track of real time so that the timing of events in the rangingreceiver 14, such as message data bit transition times, can beaccurately tracked. From step 422, the method continues to step 424.

Returning to decisional step 420, if the real-time clock 232 has thecurrent time, the method follows the Yes branch from decisional step 420to step 424. At step 424, the ranging receiver 14 performs a calibrationlocation estimate.

At step 426, the ranging receiver 14 determines its receiver bias basedon geometric and measured data. The geometric data may comprisesatellite message data, approximate location data and/or other suitabledata useful for estimating Doppler frequency shift. The approximatelocation data may comprise a previous location estimate, such as acalibration location estimate, or general location information providedby an external source, such as a cell site identification provided by aPSAP or an estimate provided by a user of the wireless device 16.According to one embodiment, the ranging receiver 14 determines itsreceiver bias by first determining the actual Doppler frequency shiftfor the satellite signals being processed based on the geometric datafrom each satellite 12. Based on the actual Doppler frequency shifts(estimated from the geometric data) and the measured CFOs, the rangingreceiver 14 calculates the receiver frequency bias for the rangingreceiver 14, which is stored for future use. At step 428, the rangingreceiver 14 reverts to the low-power standby condition and waits foranother trigger.

At step 430, the ranging receiver 14 sets a timer for a recalibrationtrigger. Thus, after a specified amount of time has passed (i.e., afterthe timer expires), a recalibration trigger will be generated in step434 to prompt the ranging receiver 14 to perform another locationestimate. The method then returns to step 430 where the timer is resetfor another recalibration trigger. In this way, the location estimatemay be automatically updated periodically.

According to one embodiment, the specified amount of time correspondingto the timer set in step 430 is approximately 10 minutes. However, itwill be understood that the specified amount of time may be any suitablelength of time without departing from the scope of the presentinvention. For example, according to one embodiment, the specifiedamount of time may vary based on comparing consecutive locationestimates. Thus, for this embodiment, the specified amount of time maybe reduced when consecutive location estimates indicate that the rangingreceiver 14 is moving at greater than a certain velocity and may beincreased when consecutive location estimates indicate that the rangingreceiver 14 is moving at less than a certain velocity.

Returning to decisional step 414, if the CFO extraction was notsuccessful, the method follows the No branch from decisional step 414 tostep 440. At step 440, the ranging receiver 14 sets a timer for aninitial trigger. Thus, after a specified amount of time has passed(i.e., after the timer expires), an initial trigger will be generated instep 442. The method then returns to step 400 where the ranging receiver14 detects the initial trigger and the method begins again. In this way,the calibration location estimate may be re-attempted automatically at alater time. According to one embodiment, the specified amount of time isapproximately 10 minutes. However, it will be understood that thespecified amount of time may be any suitable length of time withoutdeparting from the scope of the present invention.

Returning to decisional step 408, if a fresh calibration locationestimate is determined to be available, the method follows the Yesbranch from decisional step 408 to step 430 where the timer is set for arecalibration trigger as described above. In this way, the calibrationlocation estimate may be updated automatically after the specifiedperiod of time.

FIG. 5 is a flow diagram illustrating a method for obtaining a locationestimate based on a non-initial trigger for the ranging receiver 14 inaccordance with one embodiment of the present invention. The methodbegins at step 500 where the ranging receiver 14 detects a non-initialtrigger.

According to one embodiment, the non-initial trigger may comprise arecalibration trigger that is automatically generated by the rangingreceiver 14 periodically based on a timer. Thus, when the recalibrationtrigger is generated, the timer for the recalibration trigger may beautomatically reset to trigger another location estimate after aspecified amount of time has passed. The non-initial trigger may alsocomprise a trigger that is generated by a user of the wireless device 16pushing a button 30 on the ranging receiver 14, generated by a servicerequester 62, or based on any other suitable request.

At decisional step 502, a determination is made regarding the status ofa superframe in the ranging receiver 14. If no superframe is present inthe ranging receiver 14 or if the superframe is expired, the methodfollows the Expired branch from decisional step 502 to step 504. Thesuperframe may be considered expired if the superframe is greater than96 hours old. However, it will be understood that the superframe may beconsidered expired based on another suitable amount of time or othersuitable criteria without departing from the scope of the presentinvention. At step 504, the ranging receiver 14 downloads the superframefrom the satellites 12 or from the geolocation processor 24.

If the superframe in the ranging receiver 14 is not current, the methodfollows the Not Current branch from decisional step 502 to step 506. Thesuperframe may be considered not current if the superframe is between 4and 96 hours old. However, it will be understood that the superframe maybe considered not current based on another suitable amount of time orother suitable criteria without departing from the scope of the presentinvention. At step 506, the ranging receiver 14 downloads an update tothe superframe from the satellites 12 or from the geolocation processor24.

Any data obtained from the geolocation processor 24 in steps 504 or 506may be obtained over the voice channel using the modems 40 or via analternate pathway using, for example, a control channel for the wirelesscarrier network 20 or other suitable data pathway.

Returning to decisional step 502, if the superframe in the rangingreceiver 14 is current, the method follows the Current branch fromdecisional step 502 to step 508. Also, after a superframe has beendownloaded in step 504 or an update has been downloaded in step 506, themethod continues to step 508. The superframe may be considered currentif the superframe is less than 4 hours old. However, it will beunderstood that the superframe may be considered current based onanother suitable amount of time or other suitable criteria withoutdeparting from the scope of the present invention.

At step 508, the location circuitry of the ranging receiver 14 is turnedon. At step 510, the ranging receiver 14 begins collecting samples forCFO extraction and attempts to perform CFO extraction based on thecollected samples.

At decisional step 512, a determination is made regarding whether or notthe CFO extraction was successful. If the CFO extraction was successful,the method follows the Yes branch from decisional step 512 to step 514.At step 514, the ranging receiver enters the stand-alone mode forpseudorange estimation. At step 516, the ranging receiver 14 estimatespseudorange. According to one embodiment, the ranging receiver 14estimates pseudorange in accordance with the method of FIGS. 7 and 8.

At decisional step 518, a determination is made regarding whether or notthe real-time clock 232 has the current time. If the real-time clock 232does not have the current time, the method follows the No branch fromdecisional step 518 to step 520.

At step 520, the real-time clock 232 for the ranging receiver 14 iscalibrated, or synchronized, to a remote clock across the wireless linkor based on TOD information in the positioning signals. Once calibrated,the real-time clock 232 keeps track of real time so that the timing ofevents in the ranging receiver 14, such as message bit transition times,can be accurately tracked. From step 520, the method continues to step522.

Returning to decisional step 518, if the real-time clock 232 has thecurrent time, the method follows the Yes branch from decisional step 518to step 522. At step 522, the ranging receiver 14 performs the locationestimate.

At step 524, the ranging receiver 14 determines its receiver bias basedon geometric data. The geometric data may comprise satellite messagedata, approximate location data and/or other suitable data useful forestimating CFO for compensation during pseudorange processing in thegeometric mode. The approximate location data may comprise a previouslocation estimate, such as a calibration location estimate, or generallocation information provided by an external source, such as a cell siteidentification provided by a PSAP or an estimate provided by a user ofthe wireless device 16. According to one embodiment, the rangingreceiver 14 determines its receiver bias by first calculating the actualDoppler frequency shift for each of the satellite signals being receivedbased on the geometric data for each satellite 12 and the most recentlocation estimate. Based on these actual Doppler frequency shifts, theranging receiver 14 calculates the difference between the actualmeasured CFOs and the calculated Doppler shifts to determine thefrequency bias for the ranging receiver 14, which is stored for futureuse. From step 524, the method continues to step 526.

Returning to decisional step 512, if the CFO extraction was notsuccessful, the method follows the No branch from decisional step 512 tostep 528. At step 528, the ranging receiver 14 enters the geometricmode. Thus, when the ranging receiver 14 can successfully perform CFOextraction, the ranging receiver 14 enters the stand-alone mode in orderto determine a pseudorange. However, when the ranging receiver 14 isunable to perform CFO extraction due to the weak level of the signalsbeing received at the ranging receiver 14, the ranging receiver 14enters the geometric mode in order to determine a pseudorange. Accordingto one embodiment, the ranging receiver 14 enters the geometric mode ifattempted CFO extraction is unsuccessful within a pre-defined period oftime. Depending on the application or embodiment, the pre-defined periodof time may comprise approximately 1 to 30 seconds or any other suitableperiod of time.

At step 530, the ranging receiver 14 obtains geometric data for thelocation estimating process. As used herein “to obtain data” means toretrieve or receive data from a local memory store or from a remotedevice. According to one embodiment, the geometric data comprisessatellite message data and approximate location data. The approximatelocation data may comprise a previous location estimate, such as acalibration location estimate, or general location information providedby an external source, such as a cell site identification provided by aPSAP or an estimate provided by a user of the wireless device 16.

At step 532, the ranging receiver 14 estimates the CFO for eachsatellite 12. According to one embodiment, these CFOs are estimated bysumming the Doppler frequency shifts (which may be determined based onthe geometric data) and the receiver frequency bias (which waspreviously determined during the calibration process).

At step 534, the ranging receiver 14 obtains message data fragments fromthe geolocation processor 24 or from the results of the method forpredicting satellite message data described in FIG. 12 or other suitableprediction method. At step 536, the ranging receiver 14 estimatespseudorange. According to one embodiment, the ranging receiver 14estimates pseudorange in accordance with the method of FIGS. 13A-1,13A-2, 13B, and 13C. At step 538, the ranging receiver 14 performs thelocation estimate.

From steps 524 and 538, the method continues to step 526 where theranging receiver 14 stores the location estimate, receiver bias andcurrent time. At step 540, the ranging receiver 14 reverts to thelow-power standby condition. At decisional step 542, a determination ismade regarding whether the trigger detected in step 500 was arecalibration trigger. If the trigger was not a recalibration trigger,the method follows the No branch from decisional step 542 to step 544.At step 544, the ranging receiver 14 sends the location estimate to therequester who generated the trigger, at which point the method comes toan end. However, if the trigger was determined to be a recalibrationtrigger in decisional step 542, the method follows the Yes branch fromdecisional step 542 and comes to an end.

FIGS. 6A and 6B are flow diagrams illustrating a method for direct CFOextraction in the system 10 in accordance with one embodiment of thepresent invention. The method begins at step 600 where the locationcircuitry of the ranging receiver 14 is turned on. At step 602, adecimated output matrix, DM, of dimension (P, W) with element pointerp,w, is initialized and the decimated output pointer, p, is initializedto 1.

At step 604, sample sizes S1 and S2 are initialized, a maximum number ofsamples, MAX, is initialized to S1, and a sample number, s, is set to 1.Also at step 604, a rate correction indicator, RC, is set to 0. In oneembodiment, the sample size S1 is set to correspond to a sampledduration of approximately one second and the sample size S2 is set tocorrespond to a sampled duration between approximately 5 and 100seconds. However, it will be understood that the sample sizes may be setto any suitable number without departing from the scope of the presentinvention.

At step 606, a number W of rate estimates, R_(w), is initialized and wis set to a value of one. In one embodiment, the number of estimates isselected to ensure that the error range between estimates is less than0.1 Hz/second, but any other suitable error range may be used. For anerror range of less than 0.1 Hz/second, the number of estimates isselected as the rate range divided by the error range between estimates.

At step 608, a decimation counter is initialized. According to oneembodiment, the decimation counter is initialized to a decimation rate,DR, that corresponds to the rate at which the samples will be decimated.This decimation rate may be chosen in relation to the signal-samplingrate (which may be 1,024 kHz×2^(n), with n=1, 2 or 3, or other suitablerate). For example, the signal may be sampled directly to result indown-conversion to baseband at these sampling rates or at higher ratesto produce results that may be easily converted to I/Q samples.According to one embodiment, the decimation rate may be chosen to yielda signal with at least a 20 kHz bandwidth, thereby allowing for themaximum range of the CFOs and the doubling in frequency caused by thesquaring step. Thus, for a 2,048 kHz complex sampling rate (n=1, above),the decimation rate (DR) may be chosen to be approximately 100.

At step 610, the ranging receiver 14 collects a new signal sample. Atstep 611, the ranging receiver 14 increments the sample counter, s. Atstep 612, the ranging receiver 14 squares the signal sample in order torecover the original carrier on which the biphase Gold code is modulatedand to double its original frequency. At step 614, the ranging receiver14 adds the squared sample value to an accumulator. According to oneembodiment, the squared sample is multiplied by a filtering coefficientidentified by the decimation counter before being added to theaccumulator. At step 616, the ranging receiver 14 decrements thedecimation counter.

At decisional step 618, a determination is made regarding whether or notthe decimation counter is equal to zero. If the decimation counter isnot equal to zero, the method follows the No branch from decisional step618 and returns to step 610 for the collection of another signal sample.However, if the decimation counter is equal to zero, the method followsthe Yes branch from decisional step 618 to decisional step 620.

At decisional step 620, a determination is made regarding whether or notRC equals 1. According to the illustrated embodiment, rate correction isapplied when RC equals 1 and is not applied when RC equals 0. However,it will be understood that rate correction may be applied based on anysuitable vales for RC or based on other suitable criteria withoutdeparting from the scope of the present invention. For the illustratedembodiment, if RC equals 1, the method follows the Yes branch fromdecisional step 620 to step 621. At step 621, w is set to a value ofone.

At step 622, the ranging receiver 14 gets the w^(th) Doppler correction.In order to determine the w^(th) Doppler correction, the rangingreceiver 14 computes a pointer to a table of sine and cosine values.These tabular values are used to implement multiplication of the samplesby the phase rotation vector e^(−jωt), i.e., cos(ωt)−j·sin(ωt), where jrepresents the square root of −1 and ω is the frequency term2ω(D_(w)+R_(w)t), where D_(w) is the current, or w^(th), Doppler shiftand R_(w) is the current, or w^(th), Doppler rate. Since D_(w) isunknown, it is set to zero, and since the estimate producing the largestresponse will identify the appropriate rate R_(w), D_(w) will come outof the spectral analysis of each of the W rate-compensated arrays as theCFO. The variable t is the time from the beginning of the analysis tothe center of the current decimated sample, i.e., t=i/f_(sample-rate),and i=signal sample number at the center of this decimated sample.

At step 624, the ranging receiver 14 complex multiplies the complexdecimated sample (I/Q sampling) accumulated at step 614 by the w^(th)complex Doppler correction. At step 626, the ranging receiver 14 storesthe results of the complex multiplication at a location identified byp,w in the decimated output matrix in the signal sample memory 216. Atstep 628, the ranging receiver 14 increments w.

At decisional step 630, a determination is made regarding whether or notw is greater than W. If w is not greater than W, the method follows theNo branch from decisional step 630 and returns to step 622, where theranging receiver 14 gets the Doppler correction for the incremented w.However, if w is greater than W, the method follows the Yes branch fromdecisional step 630 to step 632. At step 632, the ranging receiver 14increments p.

Returning to decisional step 620, if RC does not equal 1, the methodfollows the No branch from decisional step 620 to step 634. At step 634,the value in the accumulator described in step 614 is stored at alocation identified by p,w in the signal sample memory 216. At thispoint, the method continues to step 632 where the ranging receiver 14increments p. From step 632, the method continues to decisional step635.

At decisional step 635, a determination is made regarding whether or notp is equal to the maximum number of decimated samples, MAX/DR. If p isnot equal to MAX/DR, the method follows the No branch from decisionalstep 635 and returns to step 608 where the decimation counter isre-initialized for the process of collecting additional signal samples.However, if p is equal to MAX/DR, the method follows the Yes branch fromdecisional step 635 to step 636.

At step 636, the ranging receiver 14 attempts to find significantcarriers in the sample sets. According to one embodiment, the rangingreceiver 14 attempts to find significant carriers in accordance with themethod of FIG. 6B. While the ranging receiver is attempting to findsignificant carriers, the method continues to decisional step 640.

At decisional step 640, a determination is made regarding whether or nots is greater than MAX. If s is not greater than MAX, the method followsthe No branch from decisional step 640 and returns to step 608 where thedecimation counter is re-initialized. However, if s is greater than MAX,the method follows the Yes branch from decisional step 640 to step 642.At step 642, RC is set to a value of one, and MAX is increased from S1to the greater value S2.

At decisional step 644, a determination is made regarding whether or nots is greater than MAX. If s is not greater than MAX, the method followsthe No branch from decisional step 644 and returns to step 608 where thedecimation counter is re-initialized. However, if s is greater than S2,the method follows the Yes branch from decisional step 644 to step 646.At step 646, a flag is set to indicate that the signal is too weak forsuccessful CFO extraction, at which point the method comes to an end.

FIG. 6B is a flow diagram illustrating a method for attempting to findsignificant carriers in the method of FIG. 6A in accordance with oneembodiment of the present invention. The method begins at step 650 wherethe decimated sample sets stored in the signal sample memory 216, eachof which corresponds to a Doppler-rate compensation estimate, areFourier-transformed into the frequency domain.

At step 652, the spectrum of each set is searched for significantcarriers, i.e., carriers that are sufficiently above a noise-backgroundthreshold. According to one embodiment, a carrier is sufficiently abovethe noise-background threshold when the carrier is at least 6 dB abovethe noise-background threshold. However, it will be understood that acarrier may be sufficiently above the noise-background threshold whenthe carrier is any suitable level above the noise-background threshold.

In a particular embodiment, the six highest peaks are identified aspossible carriers and the 20 next highest peaks are averaged toestablish a noise-background threshold. The possible carriers may beconfirmed as carriers that are sufficiently above the noise-backgroundthreshold when the carriers are at least four times, or the equivalentof 6 dB, higher than the threshold. It will be understood that thenoise-background threshold may be otherwise suitably determined withoutdeparting from the scope of the present invention. In addition, thecarriers may be considered to be sufficiently above the noise-backgroundthreshold when the carriers are at any suitable level above thethreshold.

At decisional step 654, a determination is made regarding whether aspecified minimum number of significant carriers sufficiently above thenoise-background threshold have been found. According to one embodiment,the specified minimum number is four. According to another embodiment,the specified minimum number may be greater than four since theavailability of more pseudorange estimates improves the quality orconfidence level of a location estimate. However, it will be understoodthat any suitable number of significant carriers may be specified.

If the specified number of significant carriers have been found, themethod follows the Yes branch from decisional step 654 to step 656. Atstep 656, the ranging receiver 14 stores the CFO results. At step 658,the direct CFO extraction of the method of FIG. 6A is ended due to thesuccessful attempt to find significant carriers. In this way, CFOs canbe extracted from approximately one second of signal sample processingfrom signals obstructed up to approximately 10 dB of attenuation or canbe extracted from approximately 10 seconds of signal sample processingfrom signals obstructed up to approximately 15 dB of attenuation.

Returning to decisional step 654, if the specified number of significantcarriers have not been found, the method follows the No branch fromdecisional step 654 and returns to the method of FIG. 6A for thecontinuation of direct CFO extraction.

FIG. 7 is a flow diagram illustrating a method for determining apseudorange in the ranging receiver 14 in the stand-alone mode inaccordance with one embodiment of the present invention. The methodbegins at step 700 where the ranging receiver 14 begins to collectsamples for pseudorange estimation from the signals received from thesatellites 12. At step 702, the ranging receiver 14 selects one of theCFOs determined from the direct CFO extraction process of FIG. 6 for thesatellites 12. At step 704, the ranging receiver 14 begins to processthe pseudorange samples by compensating the samples for the selectedCFO.

At step 706, the ranging receiver 14 removes satellite message datamodulation from the pseudorange samples by multiplying out the biphasemessage data modulation, as described in more detail below in connectionwith FIGS. 8A and 8B.

At step 708, the ranging receiver 14 linearly combines, or stacks, thesamples into a single epoch duration result for each satellite 12. Atstep 710, the ranging receiver 14 compensates for time dilation. At step712, the ranging receiver 14 correlates the Gold codes for thesatellites 12 to give the pseudoranges from those satellites 12.According to one embodiment, the ranging receiver 14 correlates the Goldcodes by Fourier transform means. For this embodiment, eachCFO-compensated stack of samples which has been Fourier-transformed ismultiplied by the Fourier transform of the time-reversed series of theGold code for a satellite 12 (sampled at the same rate as thepseudorange samples and stored in memory 216 or 220). The product isthen inverse-Fourier transformed to yield the pseudorange time sequence.

At decisional step 714, a determination is made regarding whether acorrelation peak exists in each of the pseudorange time sequences thatis sufficiently above a noise-background threshold. According to oneembodiment, a correlation peak is sufficiently above thenoise-background threshold when the correlation peak is at least 6 dBabove the noise-background threshold. However, it will be understoodthat a correlation peak may be sufficiently above the noise-backgroundthreshold when the correlation peak is any suitable level above thenoise-background threshold. If such a peak does not exist for any of thepseudorange time sequences, the method follows the No branch fromdecisional step 714 to decisional step 716.

At decisional step 716, a determination is made regarding whether amaximum number of combined pseudorange samples has been exceeded for thepseudorange time sequences without a correlation peak. According tovarious embodiments, the maximum number of combined samples is based ona corresponding amount of sampling time for a location estimate that isapproximately 1 to 30 seconds. However, it will be understood that themaximum number of combined samples may be any suitable number.

If the maximum number of combined pseudorange samples has been exceeded,this indicates that the corresponding pseudorange signals being receivedat the ranging receiver 14 are too weak to be used. In this situation,the method follows the Yes branch from decisional step 716 to step 717where a flag is set to indicate that the signal is too weak, at whichpoint the method comes to an end. However, if the maximum number ofcombined pseudorange samples has not been exceeded, the method followsthe No branch from decisional step 716 and returns to step 700 toprocess more samples to be combined with previously compensated andstacked samples for pseudorange estimation.

Returning to decisional step 714, if a correlation peak that issufficiently above the noise-background threshold does exist for each ofthe pseudorange time sequences, the method follows the Yes branch fromdecisional step 714 to step 718. At step 718, a pseudorange isdetermined based on the correlation peak, after which the method comesto an end. According to one embodiment, a multi-path correcting centroidcalculation is applied to determine a substantially exact location ofthe center of each of the peaks based on techniques that compensate forthe distortion of each peak's shape by the presence of multi-pathsignals occurring near the correlation peak. In this way, a useablepseudorange may be determined based on approximately 0.1 seconds worthof received signal samples comprising a minimum carrier-to-noise densityratio of approximately 20 dB.

FIGS. 8A and 8B are flow diagrams illustrating a method for aligningmessage data to determine a pseudorange in the ranging receiver 14 in astand-alone mode in accordance with one embodiment of the presentinvention. The method of FIG. 8A begins with the availability of aspecified number of identified significant carriers, each having a CFO.According to one embodiment, the carriers are identified through thedirect CFO extraction process described above in connection with FIGS.6A and 6B.

For each of the CFOs, a pointer-step increment, g(m), is generated atstep 800. This pointer-step increment is used to increment a pointerthat indexes a table of sine and cosine trigonometric values to be usedfor frequency compensation by complex-vector rotation. The magnitude ofthe increment is proportional to the frequency to be compensated. In oneembodiment, by using the moduli and signs of the pointer value, thetable can be restricted to one quadrant of values.

At step 802, a number of epochs per sub-stack, P, is initialized and itscounter, p, is set to a value of one. According to one embodiment, P isinitialized to a value of four or five. At step 804, a number ofsub-stacks per analysis, Q, is initialized and its counter, q, is set toa value of one. According to one embodiment Q is initialized to a valueof 60/P, or twelve for the embodiment in which P is initialized to avalue of five.

At step 806, a number of samples per epoch, K, is initialized, and asamples per epoch counter, k, is set to a value of one. According to oneembodiment, K is initialized to a value of 1,023×2^(n), with n=1, 2 or3. At step 808, a number of carriers, M, is initialized and a signalsample counter, i, is set to a value of one. According to oneembodiment, M is initialized to a value of four, five, or six, based onthe specified number of significant carriers available, as describedabove. At step 810, a carrier counter, m, is set to a value of one.

At step 812, the ranging receiver 14 gets a signal sample. At step 814,the ranging receiver 14 gets the m^(th) CFO compensation term for thei^(th) sample. In one embodiment, the i^(th) pointer value for them^(th) CFO is n=modulo[g(m) i], where the modulus is equal to the numberof entries in the trigonometric table that represent the interval 0 to90 degrees of rotation. The sine and cosine values at this pointer valueare fetched from the table to form the complex rotational compensationvector w=cosine [n]+j sine [n], where j represents the square root of−1. At step 816, the ranging receiver 14 complex multiplies the sampleby the CFO compensation term. At step 818, the ranging receiver 14accumulates the result of the complex multiplication at a locationidentified by k,q (i.e., position k in sub-stack q) in an m^(th) array.At step 820, the ranging receiver 14 increments m.

At decisional step 822, a determination is made regarding whether or notm is greater than M. If m is not greater than M, the method follows theNo branch from decisional step 822 and returns to step 814. However, ifm is greater than M, the method follows the Yes branch from decisionalstep 822 to step 824. At step 824, the ranging receiver 14 incrementsboth k and i.

At decisional step 826, a determination is made regarding whether or notk is greater than K. If k is not greater than K, the method follows theNo branch from decisional step 826 and returns to step 810 where m isset to a value of one before another signal sample is collected.However, if k is greater than K, the method follows the Yes branch fromdecisional step 826 to step 828. At step 828, k is set to a value ofone. At step 830, the ranging receiver 14 increments p.

At decisional step 832, a determination is made regarding whether or notp is greater than P. If p is not greater than P, the method follows theNo branch from decisional step 832 and returns to step 810 where m isset to a value of one before another signal sample is collected.However, if p is greater than P, the method follows the Yes branch fromdecisional step 832 to step 834. At step 834, p is set to a value ofone. At step 836, the ranging receiver 14 increments q.

At decisional step 838, a determination is made regarding whether or notq is greater than Q. If q is not greater than Q, the method follows theNo branch from decisional step 838 and returns to step 810 where m isset to a value of one before another signal sample is collected.However, if q is greater than Q, the method follows the Yes branch fromdecisional step 838 and comes to an end. At this point, sub-stacks havebeen generated for use in determining message data alignment, asdescribed in more detail below and in connection with FIGS. 9, 10 and11.

The method of FIG. 8B begins at step 844 where the ranging receiver 14sets k, p, q and a sub-stacks per bit counter, r, all to a value of oneand initializes a number of sub-stacks per data bit, R. According to oneembodiment, R is initialized to a value of 20/P. At step 846, theranging receiver 14 sets m to a value of one. At step 848, the rangingreceiver 14 adds the value at the location identified by k,q of them^(th) array to the value at the location identified by k,r of them^(th) array. At step 850, the ranging receiver 14 adds the value at thelocation identified by k,q+R of the m^(th) array to the value at thelocation identified by k,r+R of the m^(th) array. At step 852, theranging receiver 14 increments m.

At decisional step 854, a determination is made regarding whether or notm is greater than M. If m is not greater than M, the method follows theNo branch from decisional step 854 and returns to step 848 to add thevalues at the incremented m^(th) array. However, if m is greater than M,the method follows the Yes branch from decisional step 854 to step 856.At step 856, the ranging receiver 14 increments k.

At decisional step 858, a determination is made regarding whether or notk is greater than K. If k is not greater than K, the method follows theNo branch from decisional step 858 and returns to step 846 where m isset to a value of one. However, if k is greater than K, the methodfollows the Yes branch from decisional step 858 to step 860. At step860, the ranging receiver 14 sets k to a value of one. At step 862, theranging receiver 14 increments p.

At decisional step 864, a determination is made regarding whether or notp is greater than P. If p is not greater than P, the method follows theNo branch from decisional step 864 and returns to step 846 where m isset to a value of one. However, if p is greater than P, the methodfollows the Yes branch from decisional step 864 to step 866. At step866, the ranging receiver 14 sets p to a value of one. At step 868, theranging receiver 14 increments r.

At decisional step 870, a determination is made regarding whether or notr is greater than R. If r is not greater than R, the method follows theNo branch from decisional step 870 and returns to step 846 where m isset to a value of one. However, if r is greater than R, the methodfollows the Yes branch from decisional step 870 to step 872. At step872, the ranging receiver 14 sets both r and k to a value of one. Atstep 874, the ranging receiver 14 sets m to a value of one.

At step 876, the ranging receiver 14 adds the value at the locationidentified by k,r of the m^(th) array to the value at the locationidentified by k,r of an m^(th) sum stack and to the value at thelocation identified by k,r+R of an m^(th) difference stack.

At step 878, the ranging receiver 14 adds the value at the locationidentified by k,r+R of the m^(th) array to the value at the locationidentified by k,r of the m^(th) sum stack. At step 880, the rangingreceiver 14 subtracts the value at the location identified by k,r+R ofthe m^(th) array from the value at the location identified by k,r+R ofthe m^(th) difference stack. At step 882, the ranging receiver 14increments m.

At decisional step 884, a determination is made regarding whether or notm is greater than M. If m is not greater than M, the method follows theNo branch from decisional step 884 and returns to step 874 where m isset to a value of one. However, if m is greater than M, the methodfollows the Yes branch from decisional step 884 to step 886. At step886, the ranging receiver 14 increments k.

At decisional step 888, a determination is made regarding whether or notk is greater than K. If k is not greater than K, the method follows theNo branch from decisional step 888 and returns to step 874 where m isset to a value 1. However, if k is greater than K, the method followsthe Yes branch from decisional step 888 to step 890. At step 890, theranging receiver 14 sets k to a value of one.

At step 892, the ranging receiver 14 correlates each sum stack(evaluating the same-signed data bits) and difference stack (evaluatingthe different-signed data bits) with the corresponding Gold codes toobtain pseudorange peaks and stores the peak values and their polaritiesin an output array at locations (m,r). At step 894, the ranging receiver14 increments r.

At decisional step 896, a determination is made regarding whether or notr is greater than R. If r is not greater than R, the method follows theNo branch from decisional step 896 and returns to step 874 where m isset to a value of one. However, if r is greater than R, the methodfollows the Yes branch from decisional step 896 to step 898. At step898, the ranging receiver 14 evaluates the results of the pseudorangecorrelations stored in step 892 in order to determine the quality of themessage data alignment obtained during the current iteration. Based onthe maxima of the results, the ranging receiver 14 determines thealignment, and based on the sign of the maxima, the ranging receiver 14determines the polarity of the corresponding message data bit. At thispoint, stacks have been generated and used to determine coarse messagedata alignment, as described in more detail below in connection withFIGS. 9A and 9B.

FIGS. 9A and 9B are block diagrams illustrating a system 900 forgenerating accumulated sub-stacks and stacks of CFO-compensated samplesand for finding which of the alignments of those stacks with the messagedata bits produces the largest pseudorange estimates in accordance withone embodiment of the present invention. By determining alignment forthe satellite message data, the ranging receiver 14 may remove thesatellite message data from the received Gold code signal by multiplyingthe Gold code by negative one (−1) where the bits of the satellitemessage data result in the Gold code being inverted. Multiple signalsmay then be added together to improve the signal-to-noise ratio. In thisway, processing gain may be increased as compared to a signal that issquared in order to remove the satellite message data.

The system 900 comprises a data stream 902 that represents the signalbeing received at the ranging receiver 14 from the satellites 12. In theillustrated embodiment, each message data bit comprises 20 epochs of theGold code. For the illustrated example, a portion of a first messagedata bit 902 a is followed by a second message data bit 902 b, a thirdmessage data bit 902 c and a fourth message data bit 902 d. The datastream 902 comprises a plurality of epochs 912 that are received at theranging receiver 14 from the satellites 12. Each epoch 912 has aduration of one complete cycle of the signal's Gold code modulation. Inthe illustrated embodiment, for GPS signals, there are 1,023 Gold-codechips in an epoch 912, which may be sampled at 2,048 or 4,096 samplesper epoch or other suitable sampling rate. Thus, each epoch 912 mayinclude 2,048 signal samples for the first sampling rate.

To determine the satellite message data alignment in accordance with oneembodiment of the present invention, the ranging receiver 14 combines aplurality of sample epochs 912 into a plurality of sub-stacks 914.According to the illustrated embodiment, the number of epochs per databit is 20, and each sub-stack 914 comprises five epochs 912. The rangingreceiver 14 then further combines the sub-stacks 914 into a plurality ofstacks 916. According to the illustrated embodiment, each stack 916comprises four sub-stacks 914. In an alternative embodiment, eachsub-stack 914 could comprise four epochs 912 and each stack 916 couldcomprise five sub-stacks 914. It will be understood that other suitablenumbers of epochs 912 may be included in each sub-stack 914 and othersuitable numbers of sub-stacks 914 may be included in each stack 916without departing from the scope of the present invention.

The ranging receiver 14 then identifies pairs of stacks 916 such thateach pair comprises adjacent epochs 912 of the data stream 902. Forexample, the pair 916 a comprises stack S1, which includes the first 20epochs 912 of the data stream 902, and stack S7, which includes thesecond 20 epochs 912 of the data stream 902. For each such pair ofstacks 916, the ranging receiver 14 forms both the sum and differencevalues in each of the stacks 916. The message data alignment may then bedetermined based on the largest pseudorange peak values for each sum anddifference pair. In addition, the polarities of the largest pseudorangepeak values indicate the signs for the corresponding message data bitpairs. Knowledge of whether the sum or difference provided thepseudorange peak value may be used to determine the order of the databit-pair (e.g., “01” or “10” for difference and “00” or “11” for sum).

FIG. 9B is a block diagram illustrating a portion of the system 900 ingreater detail in accordance with one embodiment of the presentinvention. The illustrated system 900 comprises a plurality of epochs912 a to 912 e that comprise signal samples that are representative ofthe Gold code chips for the signal received from a satellite 12 at theranging receiver 14. To determine coarse satellite message dataalignment, the ranging receiver 14 begins at an arbitrary time toaccumulate samples of the signal for a satellite 12 in accumulators 918.As used herein, “coarse” alignment means alignment to within 2.5 epochs912, which arises from the choice of 5 epochs 912 per sub-stack 914.According to one embodiment, the number of accumulators 918 correspondsto the number of samples in an epoch 912. Thus, for the embodiment inwhich each epoch 912 comprises 1,023 chips and the signal-sampling rateis 2,048 samples per epoch, the system 900 comprises 2,048 accumulators918.

As each sample of the signal is received at the ranging receiver 14, thesignal is accumulated in an accumulator 918. For example, if thesampling rate was a sample per chip and synchronous with its position inthe Gold code epoch and if the ranging receiver 14 begins to accumulatesamples of the Gold code with the 733^(rd) chip of the Gold code, thesample representing the 733^(rd) chip of the Gold code would beaccumulated in the A₁ accumulator 918, the sample representative of the734^(th) chip of the Gold code would be accumulated in the A₂accumulator 918, and so on, with the sample representing the 732^(nd)chip of the Gold code accumulated in the A_(n) accumulator 918.

After the samples of the first epoch 912, which comprises an entirecycle of the Gold code, are accumulated in the accumulators 918, thenext epoch of samples 912, or cycle of the Gold code, is similarlyaccumulated such that each accumulator 918 accumulates the samplerepresenting the same chip of the Gold code. Thus, while within the samemessage data bit, the samples representing the first chip of each epoch912 are accumulated with the same algebraic sign, and so on for all thesamples in the epochs 912 representing the current message data bit.When the sign of the next message bit changes, the sign of all thesignal samples representing the new message data bit are inverted and,when accumulated, diminish the previously accumulated sums.

According to the illustrated embodiment, each accumulator 918accumulates samples for five epochs 912. However, it will be understoodthat the accumulators 918 may accumulate samples for any suitable numberof epochs 912 without departing from the scope of the present invention.

After five epochs 912 are accumulated in the accumulators 918, theresulting values in the accumulators 918 are saved into a sub-stack 914,such as the sub-stacks 914 labeled A through M in the illustratedembodiment. The accumulators 918 may then be cleared and beginaccumulating samples for the next five epochs 912 to be combined intothe next sub-stack 914.

For the embodiment in which the accumulators 918 accumulate chips forfive epochs 912, each sub-stack 914 comprises a combination of fiveepochs 912. However, it will be understood that the sub-stacks 914 maycomprise any suitable number of epochs 912 based on the number of epochs912 accumulated in the accumulators 918 without departing from the scopeof the present invention.

The sub-stacks 914 are further combined into stacks 916. According toone embodiment, each stack 916 comprises four sub-stacks 914. Thus, forthe embodiment in which each sub-stack 914 comprises five epochs 912,each stack 916 comprises 20 epochs 912. This corresponds to the lengthof a bit of satellite message data, which is 20 epochs 912. However, itwill be understood that the stacks 916 may comprise any suitable numberof sub-stacks 914 without departing from the scope of the presentinvention.

The stacks 916 are grouped into pairs of stacks 916 representingadjacent data bits. Thus, for example, the pair 916 a comprises stack S1(comprising sub-stacks A, B, C and D) and stack S7 (comprisingsub-stacks E, F, G and H). The pair 916 b comprises stack S2 (comprisingsub-stacks B, C, D and E) and stack S8 (comprising sub-stacks F, G, Hand I). For the illustrated embodiment based on sub-stacks 914 of Athrough M, the sub-stacks 914 may be combined into twelve stacks 916, orsix pairs of stacks 916.

To determine a coarse alignment for the satellite message data, thestacks 916 in each pair are added and subtracted and the sum anddifference arrays are evaluated for pseudorange peaks. Thus, forexample, the values of Stack S1 and Stack S7 are added together andsubtracted from each other, while the values of Stack S2 and Stack S8are added together and subtracted from each other, and so on for each ofthe six pairs of stacks 916.

FIG. 10 is a block diagram illustrating a system 920 for refiningsatellite message data alignment in the system 10 in accordance with oneembodiment of the present invention. The illustrated system 920comprises two partial stacks 922 (derived from the coarse alignmentmethod described in connection with FIG. 9 above) separated by tworefining epochs 924 (each refining epoch 924 comprising two epochs 912)with two refining epochs 924 both before and after the partial stacks922. Given that the choice of five epochs per sub-stack in the coarsealignment as described above provided an alignment of within 5/2 or 2.5epochs 912, the choice of two refining epochs 924 in this illustrationtests the alignment further by two refining epochs 924 and moves thealignment within 0.5 epochs 912, which is referred to herein as a“refined” alignment. This system 920 reduces computational load ascompared to the system 900 by using epoch sums for the refining epochs924 on the edges of the partial stacks 922.

According to one embodiment, each partial stack 922 comprises 16 epochs912 and each refining epoch 924 comprises two epochs 912. Thus,according to the embodiment in which each stack 916 comprises 20 epochs912, a stack 916 comprises a partial stack 922 and two refining epochs924. For the illustrated embodiment, a stack 916 may comprise thepartial stack 922 a with the refining epochs 924 of U and V, V and W, orW and X. The corresponding stack 916 for a pair of stacks 916 maycomprise the partial stack 922 b with the refining epochs 924 of W andX, X and Y, or Y and Z.

According to one embodiment, the ranging receiver 14 synchronouslyaccumulates samples of the signal from satellites 12 in the accumulators918 as described above in connection with FIG. 9B. However, the numberof epochs 912 accumulated in each accumulator 918 may correspond to thenumber of epochs 912 in a partial stack 922 or a refining epoch 924.Thus, instead of sub-stacks 914 of the same size, the system 920comprises accumulations of 16 epochs 912 for the partial stacks 922 andtwo epochs 912 for the refining epochs 924.

For this embodiment, the number of epoch sums is reduced as compared tothe number used in the system 900. First, summing each of the sixrefining epochs 924 results in six sums. Second, the stacks may beshifted by adding and subtracting the epoch sums for the refining epochs924, which results in an additional five sums for a total of elevensums. Thus, either two or three epoch sums may be used to shift thestacks 916 earlier or later by two epochs 912.

According to an alternative embodiment, the sub-stacks 914 and stacks916 of satellite signal samples can be accumulated as described in FIGS.8A and 8B above, and the coarse alignment can be determined as describedin FIGS. 9A and 9B above. Once the coarse alignment has been determined,the refining epochs 924 may be formed from the original samples 902 instorage. Then subtracting the refining epochs 924 from the alignedstacks 916 may form the partial stacks 922.

For example, a pair of stacks 916 may comprise a first stack 916 (withthe partial stack 922 a and refining epochs 924 of V and W) and a secondstack 916 (with the partial stack 922 b and refining epochs 924 of X andY). In order to shift these stacks 916 two epochs 912 earlier,therefore, and to recompute the sum of the values, the epoch sum for Umay be added, while the epoch sum for Y is subtracted. Alternatively, toshift two epochs 912 later, the epoch sum for V may be subtracted, whilethe epoch sum for Z is added. Also, to recompute the difference invalues, the epoch sum for U and Y may be added, while twice the value ofthe epoch sum for W is subtracted to shift earlier, and epoch sums for Vand Z may be subtracted, while twice the value of the epoch sum for X isadded to shift later. In this way, eleven epoch sums may be used toobtain a refined alignment of the satellite message data, as compared tothe 41 epoch sums used in the system 900 to obtain a coarse alignment.

FIG. 11 is a flow diagram illustrating a method for aligning messagedata in the ranging receiver 14 in accordance with one embodiment of thepresent invention. The method begins at step 1100 where the rangingreceiver 14 generates sub-stacks 914 based on epochs 912 accumulated inthe accumulators 918. At step 1102, the ranging receiver 14 combines thesub-stacks 914 into stacks 916 which are grouped together in pairs. Atstep 1104, the ranging receiver 14 calculates a sum and difference foreach pair of stacks 916.

At step 1106, the ranging receiver 14 determines the maxima of thepseudorange peaks, the peaks being based on correlations of the stacks916 with the satellite Gold codes. According to one embodiment, this isaccomplished by searching for the six largest values in the correlatesof the sum and difference stacks, along with the offsets at which themaxima occur. After the maxima are found, a satellite ID is determinedfrom the Gold code yielding the peak and the pseudorange is determinedby the centroid of the correlation peak. In this way, the satellitemessage data may be aligned to within 2.5 epochs 912.

At decisional step 1108, a determination is made regarding whether ornot the alignment is to be refined. If the alignment is not to berefined, the method follows the No branch from decisional step 1108 andcomes to an end. However, if the alignment is to be refined, the methodfollows the Yes branch from decisional step 1108 to step 1109.

At step 1109, the ranging receiver 14 identifies partial stacks 922 andrefining epochs 924 which may be combined into stacks 916. At step 1110,the ranging receiver 14 determines sums for the refining epochs 924. Atstep 1112, the ranging receiver 14 shifts the stacks 916 based on therefining epochs 924, as described in more detail above in connectionwith FIG. 10. At step 1114, the ranging receiver 14 determines a refinedalignment based on the shifted stacks 916, at which point the methodcomes to an end. In this way, the satellite message data may be alignedto within 0.5 epochs 912.

FIG. 12 is a flow diagram illustrating a method for predicting satellitemessage data received in positioning signals at the ranging receiver 14in accordance with one embodiment of the present invention. The methodbegins at decisional step 1200 where a determination is made regardingthe status of a superframe in the ranging receiver 14.

If no superframe is present in the ranging receiver 14 or if thesuperframe is expired, the method follows the Expired branch fromdecisional step 1200 to step 1202. The superframe may be consideredexpired if the superframe is greater than 96 hours old. However, it willbe understood that the superframe may be considered expired based onanother suitable amount of time or other suitable criteria withoutdeparting from the scope of the present invention. At step 1202, theranging receiver 14 downloads the superframe from the satellites 12 orfrom the geolocation processor 24.

If the superframe in the ranging receiver 14 is not current, the methodfollows the Not Current branch from decisional step 1200 to step 1204.The superframe may be considered not current if the superframe isbetween 4 and 96 hours old. However, it will be understood that thesuperframe may be considered not current based on another suitableamount of time or other suitable criteria without departing from thescope of the present invention. At step 1204, the ranging receiver 14downloads an update to the superframe from the satellites 12 or from thegeolocation processor 24.

Any data obtained from the geolocation processor 24 in steps 1202 or1204 may be obtained over the voice channel using the modems 40 or viaan alternate pathway using, for example, a control channel for thewireless carrier network 20 or other suitable data pathway.

Returning to decisional step 1200, if the superframe in the rangingreceiver 14 is current, the method follows the Current branch fromdecisional step 1200 to decisional step 1206. Also, after a superframehas been downloaded in step 1202 or an update has been downloaded instep 1204, the method continues to decisional step 1206. The superframemay be considered current if the superframe is less than 4 hours old.However, it will be understood that the superframe may be consideredcurrent based on another suitable amount of time or other suitablecriteria without departing from the scope of the present invention.

At decisional step 1206, a determination is made regarding whether ornot the real-time clock 232 has the current time. If the real-time clock232 does not have the current time, the method follows the No branchfrom decisional step 1206 to step 1208. At step 1208, the real-timeclock 232 for the ranging receiver 14 is calibrated, or synchronized, toGPS time based on a remote clock or TOD information in the positioningsignals. Once calibrated, the real-time clock 232 keeps track of GPStime.

At step 1210, the ranging receiver 14 sets up a common table that isoperable to store data that is common to the superframe for eachsatellite in the constellation of satellites. According to oneembodiment, approximately 60% of the superframe is common to eachsatellite in the constellation.

At step 1212, for each of the satellites, the ranging receiver 14 setsup a unique table that is operable to store data that is unique to thesuperframe of the corresponding satellite. For example, this unique datamay comprise ephemeris data, telemetry data, tropospheric data,ionospheric propagation models, and other suitable data relating to thesatellite. At this point, along with time and date information from thereal-time clock 232 at the time it is required, the message predictorhas been set up for subsequent use by the ranging receiver 14 inpredicting satellite message data for a specified satellite 12 fromwhich positioning signals are received. From step 1212, the methodcontinues to step 1214.

Returning to decisional step 1206, if the real-time clock 232 has thecurrent time, the method follows the Yes branch from decisional step1206 to decisional step 1215. At decisional step 1215, a determinationis made regarding whether the prediction tables, which include thecommon table and the unique tables, are current. Each of the predictiontables may comprise any suitable data store. If the prediction tablesare not current, the method follows the No branch from decisional step1215 and proceeds to step 1210 where the ranging receiver 14 sets up acommon table.

However, if the prediction tables are current, the method follows theYes branch from decisional step 1215 to step 1214. At step 1214, theranging receiver 14 begins to predict a message fragment. At step 1216,the ranging receiver 14 identifies the satellite 12, and the timeinterval, corresponding to the message fragment to be predicted. At step1218, the ranging receiver 14 generates a message fragment table forpredicting the message fragment.

At step 1220, the ranging receiver 14 adds data from the common table tothe message fragment table. At step 1222, the ranging receiver 14 addsdata from the unique table for the satellite 12 identified in step 1216to the message fragment table. At step 1224, the ranging receiver 14adds time-dependent data, such as bit transition timing information, tothe message fragment table based on the current GPS time obtained fromthe real-time clock 232.

At step 1226, the ranging receiver 14 provides the predicted messagefragment, which comprises the data for predicting the satellite messagedata, to the requester. Thus, in this way, the ranging receiver 14 maypredict the satellite message data in the positioning signals so thatthe message data may be removed after alignment, which may be performedas described above in connection with FIGS. 9-11.

FIGS. 13A-1, 13A-2, 13B and 13C are flow diagrams illustrating a methodfor determining a pseudorange estimate in the ranging receiver 14 in ageometric mode in accordance with one embodiment of the presentinvention. The method provides for determining a pseudorange based onthe availability at the ranging receiver 14 of (i) accurately known realtime (with reference to the satellite constellation and within about amillisecond); (ii) an estimate of the current location of the rangingreceiver 14 (within about a mile); (iii) an estimate of the frequencybias of the ranging receiver 14; (iv) recent (within about 24 hours)ephemeris data; and (v) recent (within about 96 hours) constellationsuperframe data. In FIG. 13A-1, the method begins at step 1300 where theranging receiver 14 determines a set of Doppler-shift, Doppler-rate andsatellite ID data for a selected set of satellites from calculationsbased on the current geometric data referred to above. This set of datamay be selected from among the satellites 12 potentially viewable fromthe location of the ranging receiver 14 at that time. This selection maybe based on suitable criteria, such as low geometric dilution ofprecision, low elevation angle, or any suitable criteria. At step 1302,for each satellite 12 in the set, the ranging receiver 14 sets up atable of message data bits that will be transmitted during the time thatpseudorange samples will be processed.

At step 1304, the ranging receiver 14 computes the CFO and CFO-rate foreach of the satellites 12. The CFO is determined by adding the frequencybias of the ranging receiver 14 to the computed Doppler frequency shift.The ranging receiver 14 then assigns the Doppler rate to the CFO-ratefor each of the satellites 12. At step 1306, the ranging receiver 14stores the CFOs and the corresponding CFO-rates in a table.

At step 1308, the ranging receiver 14 initializes a maximum number ofsamples, I, and sets a sample counter, i, to one. The maximum number ofsamples may be chosen to limit the maximum integration time to suit theapplication, such as 10 to 30 seconds, but other values outside thisrange are also possible. At step 1310, a number of epochs, P, to beaveraged is initialized. The number of epochs (which corresponds to thenumber of samples) to be averaged during one loop-through may beselected according to various criteria, such as the total processinggain to be provided per loop-through, the amount of memory available fortable or intermediate result storage and any other suitable criteria. Atstep 1312, a number of carriers, M, is initialized.

At step 1314, a number of samples per epoch, K, is initialized. At step1316, the ranging receiver 14 sets the epoch sample number, k, to avalue of one. At step 1318, the ranging receiver 14 sets the carriercounter, m, to a value of one.

At step 1320, the ranging receiver 14 gets a signal sample forprocessing. At step 1322, the ranging receiver 14 gets the m^(th) CFOcompensation term for the i^(th)sample. At step 1324, the rangingreceiver 14 complex multiplies the sample by the CFO compensation term.At step 1326, the ranging receiver 14 scalar multiplies theCFO-compensated sample by its corresponding data bit polarity, which maybe determined in accordance with the method of FIG. 13B.

At step 1328, the ranging receiver 14 adds the result of themultiplication in step 1326 to a location identified by k in an m^(th)array. At step 1330, the ranging receiver 14 increments m. At decisionalstep 1332, a determination is made regarding whether or not m is greaterthan M. If m is not greater than M, the method follows the No branchfrom decisional step 1332 and returns to step 1322. However, if m isgreater than M, the method follows the Yes branch from decisional step1332 to step 1334 in FIG. 13A-2. At step 1334, the ranging receiver 14increments both k and i.

At decisional step 1336, a determination is made regarding whether ornot k is greater than K. If k is not greater than K, the method followsthe No branch from decisional step 1336 and returns to step 1318 where mis set to a value of one. However, if k is greater than K, the methodfollows the Yes branch from decisional step 1336 to step 1338. At step1338, the ranging receiver 14 sets k to a value of one. At step 1340,the ranging receiver 14 increments p.

At decisional step 1342, a determination is made regarding whether ornot p is greater than P. If p is not greater than P, the method followsthe No branch from decisional step 1342 and returns to step 1318 in FIG.13A-1 where m is set to a value of one. However, if p is greater than P,the method follows the Yes branch from decisional step 1342 to step1344. At step 1344, the ranging receiver 14 sets m to a value of one.

At step 1346, the ranging receiver 14 correlates an m^(th) pseudorangestack with a Gold code for an m^(th) satellite ID. At step 1348, theranging receiver 14 compensates for time dilation by correlation peakshifting. According to one embodiment, time-dilation compensation may beaccomplished by vector rotation in the frequency domain during thecorrelation by FFT means during step 1346. According to anotherembodiment, time-dilation compensation may be accomplished by suitablesub-stack sample shifting prior to final accumulation and conversion topseudorange by correlation. In yet another embodiment, the time-dilationcompensation may be performed in accordance with the time-shiftingmethod of FIG. 13C. At step 1350, the pseudorange stack is added to anm^(th) extended output stack and the M^(th) pseudorange is evaluated foran adequate peak. At step 1352, the ranging receiver 14 increments m.

At decisional step 1354, a determination is made regarding whether ornot m is greater than M. If m is not greater than M, the method followsthe No branch from decisional step 1354 and returns to step 1346 wherethe m^(th) pseudorange stack is correlated with the Gold code of them^(th) satellite ID for the incremented m. However, if m is greater thanM, the method follows the Yes branch from decisional step 1354 todecisional step 1356.

At decisional step 1356, a determination is made regarding whether anypeak is not adequate. If each peak is adequate, then the minimum number,M, of pseudoranges has been detected successfully and the method followsthe No branch from decisional step 1356 and comes to an end. In thisway, a pseudorange may be determined in the range of 1 to 30 secondsbased on received signals comprising a minimum carrier-to-noise densityratio in the range of 5 dB to 10 dB. However, if any peak is found to benot adequate, the method follows the Yes branch from decisional step1356 to decisional step 1358.

At decisional step 1358, a determination is made regarding whether ornot a maximum number of samples, I, has been exceeded. If the maximumnumber of samples has been exceeded, the method follows the Yes branchfrom decisional step 1358 to step 1360. At step 1360, a flag is set toindicate that the signal is too weak for the minimum number, M, ofpseudoranges to be detected successfully, at which point the methodcomes to an end.

Returning to decisional step 1358, if the maximum number of samples hasnot been exceeded, the method follows the No branch from decisional step1358 to step 1362. At step 1362, the ranging receiver 14 clears theinput sample stacks. At this point, the method returns to step 1316 inFIG. 13A-1 where k is set to a value of one.

FIG. 13B is a flow diagram illustrating a method for removing messagedata modulation in the method of FIG. 13A-1 in accordance with oneembodiment of the present invention. The method begins at step 1364where, based on geometric prediction, the ranging receiver 14 obtainssatellite IDs, Doppler frequency shift, and Doppler rates. At step 1366,the ranging receiver 14 stores a message bit transition offset, T(m),for each of the M satellites 12 based on the results of the method forpredicting satellite message data described in FIG. 12. These offsetsalso include the signal transit time to the ranging receiver 14 for eachsatellite 12.

At step 1368, the ranging receiver 14 stores a specified number ofmessage data bits for each satellite 12 based on the results of themethod for predicting satellite message data described in FIG. 12.According to one embodiment, the specified number of message data bitsis equal to the result of dividing (a) the maximum number of samples by(b) 20 times the product of the sampling rate (samples per chip) and thechips per epoch. However, it will be understood that any suitable numberof message data bits may be stored without departing from the scope ofthe present invention. Also, according to one embodiment, message databits of logical (1) and (0) may be stored as values of +1 and −1,respectively, or as values of −1 and +1, respectively. However, it willbe understood that the message data bits may be stored in any suitablemanner without departing from the scope of the present invention.

At step 1370, the ranging receiver 14 multiplies the CFO-compensatedsamples by the corresponding stored message data bits. According to oneembodiment, for the m^(th) satellite, the value of the pointer to themessage data bit may be determined by the ranging receiver 14 based onthe following formula: IntegerPart[{T(m)+i}/K]+1, where T(m) is themessage bit transition offset for the message bits from the m^(th)satellite 12, i is the sample number and K is the number of samples perepoch.

FIG. 13C is a flow diagram illustrating a method for compensating fortime dilation in the method of FIG. 13A-2 in accordance with oneembodiment of the present invention. In this method, a time offset, t,from the beginning of the analysis to the beginning of the currentsub-stack has a value of i-PK when the routine is entered from step 1348of FIG. 13A-2. The m^(th) Doppler at the beginning of this sub-stack,n(m), is equal to d(m)+t*r(m), where d(m) is the m^(th) Doppler at thebeginning of the analysis and r(m) is the m^(th) Doppler rate expressedin per-sample terms, rather than per-second terms. The average of them^(th) Doppler, ad(m), from the beginning of the current analysis to thebeginning of the current sub-stack is equal to d(m)+(t*r(m))/2. Theaverage of the m^(th) Doppler in the current sub-stack, adstack(m), isequal to n(m)+t*r(m)/2. The time shift to the beginning of thissub-stack, Del(m), is equal to ad(m)Tt/f(c) in second terms andad(m)t/fc in sample terms. The time shift within the current sub-stack,Dstack(m), is equal to adstack(m)TPK/f(c) in second terms and ad(m)PK/fcin sample terms. The total time shift, TS(m), is equal toDel(m)+Dstack(m).

In addition, the following variables are defined for the purpose of thisillustration, without limiting the application to only the GPS satelliteconstellation characteristics, as follows: i=sample number; M=number ofcarriers; d(m)=value of Doppler-shift, per instance of m; n(m)=value ofDoppler at the beginning of the stacking process (i.e., when i=1)+theaccumulated bias rate up to the beginning of the current sub-stack, perinstance of m; r(m)=value of Doppler rate, per instance of m; K=numberof samples per epoch; P=number of epochs per integration cycle; S=numberof samples per sub-stack; c=speed of light; f(c)=GPS satellite carrierfrequency (i.e., 1575.42 MHz); T=interval between samples; v=sampleindex within current sub-stack; u=sample index within extended outputstack; TS=total time shift; SS=sub-stack sample; OS=output stack sample;FP[ ]=FractionalPart of; and IP[ ]=IntegerPart of.

The method begins at step 1380 where the ranging receiver 14 sets thesample index, v, to a value of one. At decisional step 1382, adetermination is made regarding whether the time shift is positive ornegative (which depends on, and is opposite to, the sign of theDoppler-shift). If the time shift is negative, the method follows theNegative branch from decisional step 1382 to step 1384. At step 1384,the ranging receiver 14 adds (FP[TS])*SS(v) to OS(m),(v+IP[TS]−1). Atstep 1386, the ranging receiver 14 adds (1−FP[TS])*SS(v) toOS(m),(v+IP[TS]). At step 1388, the ranging receiver increments v.

At decisional step 1390, a determination is made regarding whether ornot v is greater than K. If v is not greater than K, the method followsthe No branch from decisional step 1390 and returns to step 1384.However, if v is greater than K, pseudorange peaks may be evaluated andthe method follows the Yes branch from decisional step 1390 and returnsto step 1350 in FIG. 13A-2.

Returning to decisional step 1382, if the time shift is positive, themethod follows the Positive branch from decisional step 1382 to step1392. At step 1392, the ranging receiver 14 adds (1−FP[TS])*SS(v) toOS(m),(v+IP[TS]). At step 1394, the ranging receiver 14 addsFP[TS]*SS(v) to OS(m),(v+IP[TS]+1). At step 1396, the ranging receiver14 increments v.

At decisional step 1398, a determination is made regarding whether ornot v is greater than K. If v is not greater than K, the method followsthe No branch from decisional step 1398 and returns to step 1392.However, if v is greater than K, pseudorange peaks may be evaluated andthe method follows the Yes branch from decisional step 1398 and returnsto step 1350 in FIG. 13A-2.

FIG. 14 is a flow diagram illustrating a method for determininggeolocation in the ranging receiver 14 with matching assistance inaccordance with one embodiment of the present invention. The methodbegins at step 1400 where the ranging receiver 14 waits in a low-powerstandby mode for a trigger to start the pseudorange estimating process.The trigger may comprise a request generated by the wireless device 16automatically, a request generated by a user of the wireless device 16such as by pushing a button 30 on the ranging receiver 14, a requestfrom an external source such as the Internet, a geolocation processor 24or other suitable external source, or any other suitable trigger.

Once the trigger is received, the location circuitry of the rangingreceiver 14 is turned on at step 1402. Thus, for example, the powermanagement circuitry 230 may provide full power to each of thecomponents 204, 206, 208, 210, 212, 214, 216, 218, 220 and 222 afterreceiving the trigger.

At step 1404, the real-time clock 232 for the ranging receiver 14 iscalibrated, or synchronized, to a remote clock across the wireless linkor based on TOD information in the positioning signals. Once calibrated,the real-time clock 232 keeps track of real time so that the timing ofevents in the ranging receiver 14 can be accurately tracked.

At step 1406, the ranging receiver 14 clears any prior signal samples inthe signal sample memory 216. At step 1408, the ranging receiver 14begins to collect samples for carrier detection by direct CFO extractionfrom the signals received from the satellites 12. At step 1410, the CFOsare directly extracted from the samples, as described in more detailabove in connection with FIGS. 6A and 6B.

At decisional step 1412, a determination is made regarding whether atleast a specified number of significant carriers and their CFOs havebeen found. According to one embodiment, the specified number is four.However, it will be understood that the specified number may compriseany suitable number. If the specified number of significant carriershave not been found, the method follows the No branch from decisionalstep 1412 to decisional step 1414.

At decisional step 1414, a determination is made regarding whether amaximum number of collected CFO extraction samples has been exceeded.According to one embodiment, the maximum number of collected samplescomprises the number of samples that may be collected in approximatelyone second. Thus, the maximum number of collected samples may be basedon the sampling rate. However, it will be understood that the maximumnumber of collected samples may be any suitable number.

If the maximum number of collected CFO extraction samples has beenexceeded, this indicates that the signals being received at the rangingreceiver 14 are too weak to be used. In this situation, the methodfollows the Yes branch from decisional step 1414 and comes to an end.However, if the maximum number of collected CFO extraction samples hasnot been exceeded, the method follows the No branch from decisional step1414 and returns to step 1408 for the collection of more signal samplesfor CFO extraction.

Returning to decisional step 1412, if the specified number ofsignificant carriers have been found, the method follows the Yes branchfrom decisional step 1412 to step 1416. At step 1416, the rangingreceiver 14 sends CFO results to the geolocation processor 24 throughthe service center 18. According to one embodiment, the CFO resultscomprise the CFO estimates, the real time for the CFO estimatemeasurements and/or other suitable data related to the CFO estimates. Atstep 1418, the ranging receiver 14 receives satellite information fromthe geolocation processor 24. The satellite information may comprisesatellite IDs, the most recent satellite message data fragments, and bittransition information for each of the satellites 12 identified by thegeolocation processor 24 based on the CFO results and/or any othersuitable information.

At step 1420, the ranging receiver 14 associates the CFOs with theirrespective satellites 12 based on the satellite information receivedfrom the geolocation processor 24. At step 1422, the ranging receiver 14begins to collect samples for pseudorange estimation from the signalsreceived from the satellites 12. At step 1424, the ranging receiver 14begins to process the pseudorange samples by compensating the samplesfor the CFOs.

At step 1426, the ranging receiver 14 aligns satellite message datafragments with the pseudorange samples and removes the message datamodulation from the samples by multiplying out the biphase message datamodulation, as described in more detail above in connection with FIGS.8, 9, 10, 11 and 12.

At step 1428, the ranging receiver 14 linearly combines, or stacks, thesamples into a single epoch duration result for each satellite 12. Atstep 1430, the ranging receiver 14 correlates the Gold codes for thesatellites 12. According to one embodiment, the ranging receiver 14correlates the Gold codes by Fourier transform. For this embodiment, theFourier transform of each CFO-compensated stack of samples is multipliedby the Fourier transform of the time-reversed series of the Gold codefor a satellite 12 (sampled at the same rate as the pseudorange samplesand stored in memory 216 or 220). The product is then either compensatedfor time-dilation by complex vector multiplication in the frequencydomain before it is inverse-Fourier transformed to yield thetime-dilation compensated pseudorange time sequence, or the product isinverse-Fourier transformed to yield the un-compensated pseudorange timesequence, which is compensated for time dilation by element-shifting, asdescribed in FIG. 13C, at step 1432.

At decisional step 1434, a determination is made regarding whether acorrelation peak exists in each of the pseudorange time sequences thatis sufficiently above a noise-background threshold. According to oneembodiment, a correlation peak is sufficiently above thenoise-background threshold when the correlation peak is at least 6 dBabove the noise-background threshold. However, it will be understoodthat a correlation peak may be sufficiently above the noise-backgroundthreshold when the correlation peak is any suitable level above thenoise-background threshold. If such a peak does not exist for any of thepseudorange time sequences, the method follows the No branch fromdecisional step 1434 to decisional step 1436.

At decisional step 1436, a determination is made regarding whether amaximum number of signal samples that have been combined for pseudorangeestimation has been exceeded for the pseudorange time sequences withouta correlation peak. According to one embodiment, the maximum number ofsignal samples that have been combined for pseudorange estimationcomprises the number of samples that may be combined in approximatelyone second. Thus, the maximum number of signal samples that have beencombined for pseudorange estimation may be based on the sampling rate.However, it will be understood that the maximum number of combinedsamples may be any suitable number.

If the maximum number of combined pseudorange samples has been exceeded,this indicates that the corresponding pseudorange signals being receivedare too weak at the ranging receiver 14 to be used. In this situation,the method follows the Yes branch from decisional step 1436 to step1437. At step 1437, the ranging receiver 14 sets a flag to indicate thatthe signal is too weak and returns to step 1400 where the rangingreceiver 14 reverts to the low-power standby condition and waits foranother trigger. However, if the maximum number of combined pseudorangesamples has not been exceeded, the method follows the No branch fromdecisional step 1436 and returns to step 1422 to collect more signalsamples for pseudorange estimation.

Returning to decisional step 1434, if a correlation peak that issufficiently above the noise-background threshold does exist for each ofthe pseudorange time sequences, the method follows the Yes branch fromdecisional step 1434 to step 1438. At step 1438, a multi-path correctingcentroid calculation is applied to determine a substantially exactlocation of the center of each of the peaks based on techniques thatcompensate for the distortion of each peak's shape by the presence ofmulti-path signals occurring near the correlation peak.

At step 1442, the ranging receiver 14 sends pseudorange data for each ofthe carriers detected from the constellation of satellites 12 to thegeolocation processor 24 for calculation of the geolocation of theranging receiver 14. According to one embodiment, the pseudorange datacomprises the estimate of the pseudorange, the measurement time, thesatellite ID for each satellite 12 and/or any other suitable data. Atstep 1444, the ranging receiver 14 or other requesting applicationreceives the geolocation of the ranging receiver 14 from the geolocationprocessor 24, after which the method returns to step 1400 where theranging receiver 14 reverts to the low-power standby condition and waitsfor another trigger.

FIG. 15 is a flow diagram illustrating a method for determininggeolocation in the geolocation processor 24 by providing matchingassistance in accordance with one embodiment of the present invention.The method begins at step 1500 where the geolocation processor 24receives geolocation initiating information. For example, thegeolocation initiating information may comprise protocol identifyinginformation and version information for the ranging receiver 14 providedby the ranging receiver 14 in response to a trigger. However, it will beunderstood that the geolocation initiating information may comprise anysuitable information related to the initiation of the geolocationprocess. According to one embodiment, the geolocation initiatinginformation is received from the ranging receiver 14 over the voicechannel for the wireless device 16 by way of the service center 18.

At step 1502, the geolocation processor 24 sends an acknowledgement ofthe receipt of the geolocation initiating information. For example, thegeolocation processor 24 may transmit a handshake code to the rangingreceiver 14 in order to establish communication and acknowledgecompatibility.

At step 1504, the geolocation processor 24 receives a time calibrationsignal from the ranging receiver 14. The time calibration signal maycomprise a complete sequence of, for example, a maximal lengthpseudorandom noise sequence or a Barker code modulated on an audiocarrier tone. It will be understood, however, that the time calibrationsignal may comprise any other suitable timing signal.

At step 1506, the geolocation processor 24 sends a time calibrationresponse based on the time calibration signal. According to oneembodiment, the geolocation processor 24 sends the time calibrationresponse a pre-defined period of time after receiving the timecalibration signal. For example, the pre-defined period of time maycomprise 10 milliseconds or other suitable period of time. The timecalibration response may comprise a different maximal lengthpseudorandom noise sequence modulated on the same carrier tone as thetime calibration signal, followed by a message indicating a real timeassociated with the response. The real time information may be used bythe ranging receiver 14 in order to calibrate the real-time clock 232.

At step 1508, the geolocation processor 24 receives CFO estimates fromthe ranging receiver 14. At step 1510, the geolocation processor 24matches the differences in the CFO estimates from the ranging receiver14 to differences in Doppler frequency shift measurements for signalsreceived by the receivers 48 and/or 60 or based on geometric predictionfrom the satellite constellation's current geometric data.

At step 1512, any duplicate matches found in step 1510 are eliminated inorder to identify the satellites 12. According to one embodiment,duplicate matches are eliminated by a least-squares regression method.At step 1514, the geolocation processor 24 sends satellite informationto the ranging receiver 14. The satellite information may comprise thesatellite IDs, the satellite message data patterns, the timinginformation for bit transitions in the satellite message data patternsand/or any other suitable information.

At step 1516, the geolocation processor 24 receives pseudorange data,which is generated based on the satellite information, from the rangingreceiver 14. The pseudorange data may comprise an estimate of thepseudorange, a measurement time, a satellite ID for each satellite 12and/or any other suitable data.

At step 1518, the geolocation processor 24 determines the geolocation ofthe ranging receiver 14 based on the pseudorange data, the currentephemeris data and/or any other suitable information. At step 1520, thegeolocation processor 24 sends the geolocation of the ranging receiver14 to the requesting application, at which point the method comes to anend. The geolocation may be sent in-band over the voice channel of thewireless device 16, over the data network 66, or by any other suitablemeans.

FIG. 16 is a flow diagram illustrating a method for determininggeolocation in the ranging receiver 14 by aligning or other timesearching a predetermined message data segment with a correspondingsegment of the received signal in order to determine pseudorange, rangeor time-of-arrival in the ranging receiver, in accordance with oneembodiment of the present invention. A predetermined message datasegment is any combination of known bits contained within the carriersignal. Bits are known when the value, modulation, sign or othercharacteristic of the bit, or the manner by which the modulation, signor characteristic is changed, is constant, may be predicted or may beotherwise determined based on a known calculation or logic, before thesignal sample that is comprised of such bits is stacked duringprocessing or without decoding the signal. The known bits may be or maynot be contiguous. The predetermined message data segment may have oneor more message data bit sequences each having one or more contiguousknown bits. In one embodiment the known bits may be contained in thecarrier signal by a biphase modulation. For GPS signals, thepredetermined message data may be repeated in each frame, superframe orotherwise. The geolocation of an object may be otherwise suitablydetermined based on a predetermined message data segment withoutdeparting from the scope of the present invention. An object may be anymobile, portable or otherwise moveable or other suitable device,apparatus, system or component thereof.

The method begins at step 1600 where the ranging receiver 14 waits in alow-power standby mode for a trigger to start the process for estimatingpseudorange, range or time-of-arrival.

The trigger may comprise a request generated by the wireless device 16automatically, a request generated by a user of the wireless device 16such as by pushing a button 30 on the ranging receiver 14, a requestfrom an external source such as the Internet, a geolocation processor 24or other suitable external source, or any other suitable trigger.

Once the trigger is received, the location circuitry of the rangingreceiver 14 is turned on at step 1602. Thus, for example, the powermanagement circuitry 230 may provide full power to each of thecomponents 204, 206, 208, 210, 212, 214, 216, 218, 220 and 222 afterreceiving the trigger.

The real-time clock 232 keeps track of real time so that the timing ofevents in the ranging receiver 14 can be accurately tracked. At step1604, the real-time clock 232 or other component makes an estimate ofthe clock's potential error, based on the time since it was lastsynchronized with GPS time and historical information, which may includecalibration information, regarding the customary variability of the rateof drift of the clock and its reference local oscillator. The potentialerror, in the embodiment, determines the magnitude of the clockuncertainty.

At step 1606, the ranging receiver 14 clears any prior signal samples inthe signal sample memory 216.

At step 1608, the ranging receiver 14 uses geometric methods along withephemeris or almanac information for the satellites 12 to determine themost likely in-view satellites 12 in the approximate location of theranging receiver 14. In one embodiment the method described in theco-owned U.S. Pat. No. 6,515,620 may be used. The number of satellites12 selected as the most likely in-view satellites will typically be atleast four satellites, but may be any suitable number of satelliteswithout departing from the scope of the present invention.

At step 1610, the ranging receiver 14 uses geometric methods along withephemeris or almanac information for the satellites 12 to determine theapproximate propagation times of the signals from the most likelyin-view satellites 12 to the ranging receiver 14. In one embodiment themethod described in the co-owned U.S. Pat. No. 6,515,620 may be used.

At decisional step 1612, a determination is made regarding the status ofa superframe in the ranging receiver 14. In one embodiment the rangingreceiver 14, based on information about the clock time and clock errorof the ranging receiver real-time clock 232, determines the specificsegments of the superframe that should arrive at the ranging receiver 14from each of the in-view satellites during the time period of the nextsecond. However, the length of such time period may be any suitablelength without departing from the scope of the present invention.According to one embodiment, the superframe comprises 25 frames, each ofwhich further comprises five subframes. The superframe comprises 37,500bits, which are transmitted from the satellites 12 at 50 bits persecond. Each of the 25 frames comprises a 1500-bit message that includestiming, identification, and ephemeris data, along with portions of theconstellation's almanac data and various telemetry, checksum, andcounterwords for each satellite 12.

Each subframe of the GPS satellite message includes 10 words (each a“WORD”); each WORD is comprised of 30 bits, transmitted at a rate of 50bits per second. Thus, every WORD occupies 0.6 seconds of transmissiontime; and the subframe, having 300 bits, occupies 6.0 seconds oftransmission time.

The first WORD (“WORD1”) of every subframe is the telemetry word andstarts with an 8-bit preamble, consisting of a well known, fixedBarker-Code series used for data decoder synchronization. The preambleis followed by 14 telemetry bits. The remainder of WORD1 comprises eightparity-related bits, making the total of 30 bits for WORD1. The 8preamble bits of WORD1 are fixed and known, and are the same for everysubframe.

The second WORD of every subframe (“WORD2”) is known as the “HOW”,because it contains primarily information about the handover word. Thehandover word comprises the first 17 bits of WORD2 and indicates GPStime in six-second increments. These 17 bits comprise the 17 mostsignificant bits of the 19 least significant bits (the Time-Of-Week wordor “TOW”) of the Z-count of the satellites. These 17 bits are followedby two bits of unknown telemetry information, and then three furtherbits (numbered 20, 21 and 22) that identify the current six-secondsubframe. The bits numbered 23 and 24 are two more unknown bits that areused in the parity calculations. The WORD2 finishes with six otherparity-related bits. These parity bits are computed over the first 22bits of WORD2 and the last two bits of WORD1, which cannot be determinedbecause of the unpredictability of the telemetry bits. However, the lasttwo parity bits (numbered 29 and 30) will be zero in an error freemessage. The 17 bits of the handover word and the three bits thatidentify the subframe can be generated from: (i) a local clock in thereceiver keeping GPS time (which is close to Universal Standard Time) toan accuracy of better than six seconds; and (ii) a simple, algorithmthat is used to compute the handover word and the subframeidentification, based on the time since the most recent Saturdaymidnight and the number of six second subframe intervals that haveoccurred during such time. Thus, with its knowledge of the time of day,the receiver knows precisely the first 17 consecutive bits of WORD2, aswell as the bits numbered 20, 21 and 22, and the bits numbered 29 and30, for a total of 22 “known bits” in WORD2.

At step 1614, the ranging receiver 14 selects the segment of thesuperframe to be used as the predetermined message data segment (the“PMDS”). According to one embodiment, the HOW word, or part of the HOWword, that appears in WORD2 of each subframe of the superframe messagedata may be selected as the PMDS. The HOW word is suitable for selectionas the PMDS because it may be easily predicted by the ranging receiver14, is transmitted regularly and often (every six second subframe), istransmitted at precisely the same time by all of the satellites 12 andis the same for all the satellites 12. However, it will be understoodthat any suitable segment of the message data superframe or other partof the message having known bits may be selected without departing fromthe scope of the present invention. In one embodiment a fixed, ordefault, PMDS may be used without any specific selection being requiredin step 1614, and the HOW word may be used as such fixed, or default,PMDS.

For example, if the ranging receiver 14 knows the current time withsufficient accuracy and precision, then the ranging receiver 14 mayascertain that a message data segment that can be preciselypredetermined will be contained within the remaining portion of thecurrently arriving subframe and will be received before the next arrivalof a HOW word or the 8-bit preamble of the telemetry word, WORD1. Ifthis is the case, the ranging receiver 14 may select such message datasegment as the PMDS in order to reduce the waiting time for the selectedPMDS to arrive at the ranging receiver 14 for collection and processing.The ranging receiver 14 may otherwise select a PMDS dynamically and/orbased on real-time conditions. The PMDS(s) may be stored or retrieved bythe ranging receiver 14.

In one embodiment, the values of certain parameters may be set duringthis step 1614, or during another suitable step. Examples of suchparameters might include: (i) the width of the frequency spectrum withinwhich different CFO compensation values may be selected for each carriersignal; (ii) the length, measured in epochs or bits or any othersuitable manner, of the PMDS to be integrated or stacked; (iii) the sizeof a frequency bin, or the maximum separation of different CFOcompensation values for each satellite, which in one embodiment would bea function of the length of the PMDS to be integrated. It will beunderstood that default values may also be set for such parameterswithout departing from the scope of the present invention.

At step 1616, the ranging receiver 14 estimates the time of arrival, onthe clock of the ranging receiver 14, of the beginning of the PMDS, bycalculating the clock time that corresponds to the time at which theranging receiver 14 receives the epoch that represents the first epochof the PMDS.

At step 1618, the ranging receiver determines the length of the signalsample to be collected for subsequent processing and the time, on theclock of the ranging receiver 14, at which the ranging receiver 14 willcommence the collection of the signal sample. It will be understood thatthe ranging receiver 14 may select any length of signal sample that isgreater than the length of the PMDS without departing from the scope ofthe present invention. However, the ranging receiver 14 will in oneembodiment attempt to select a signal sample length that is long enoughto ensure that the PMDS is contained therein, but not so long as tocause an unnecessarily long time to be taken to search for and find thePMDS within the signal sample, or to utilize unnecessarily large amountsof memory to store the signal sample. The shortest possible distancebetween an in-view satellite 12 and the ranging receiver 14 occurs whenthe satellite 12 is directly overhead of the location of the rangingreceiver 14, and this distance is equal to the height of the orbit ofthe satellite 12, which is approximately 12,546 nautical miles. Thelongest possible distance between an in-view satellite 12 and theranging receiver occurs when the in-view satellite 12 is positioned atthe horizon from the view of the ranging receiver 14, and this distanceis approximately equal to the sum of the orbital height of the satellite12 (approximately 12,546 nautical miles) and the radius of the earth(approximately 3,950 nautical miles), for a total of approximately16,496 nautical miles. And the difference between the shortest andlongest distances is approximately equal to the radius of the earth orapproximately 3,950 nautical miles. Thus, at the speed of light, thepropagation time taken for a signal from the satellite 12 to the rangingreceiver 14 may be between approximately 67.5 and 89.0 milliseconds, adifference of approximately 22 milliseconds, and this difference of 22milliseconds may represent the maximum uncertainty in the propagationtime for the signal from an in-view satellite 12 to a ranging receiver14. The length of the signal sample will, in one embodiment, be equal orsubstantially equal to the sum of: (i) the length of the PMDS; (ii) twotimes the propagation time uncertainty of approximately 22 millisecondsfor the transmission of the signal from the satellite to the receiver;and (iii) two times the uncertainty of the timing information providedby the clock of the ranging receiver 14. However, since the HOW word isrepeated every six seconds in every subframe, it is unlikely that thesignal sample would ever be permitted to exceed a set fraction of thesubframe length of six seconds. In accordance with one embodiment of thepresent invention, the time, on the clock of the ranging receiver 14, atwhich the ranging receiver 14 will commence the collection of the signalsample will be determined such that center of the selected PMDS will becalculated to be at the center point of the signal sample. However, anyother suitable timing to commence the collection of the signal samplemay be selected without departing from the scope of the presentinvention.

At step 1620, the ranging receiver 14 collects signal samples for theestimation of pseudorange, range or time-of-arrival from the signalsreceived from the satellites 12.

At step 1622, the CFO compensation to be applied to the received signalis determined. The CFO compensation to be applied to the received signalsamples may be determined by several different methods. According to oneembodiment, the CFO compensation term may be determined by direct CFOextraction from the signals received from the satellites 12, asdescribed in more detail above in connection with FIGS. 6A and 6B.According to another embodiment, the CFO compensation term may bedetermined by geometric methods as previously described and as set forthin FIGS. 4 and 5. When using geometric methods to determine the CFOcompensation term, the CFO is calculated based on the approximate orestimated values of certain geometric data, such as approximate locationdata. The amount of error in such approximate values will result inpotential error or uncertainty in the estimated value calculated for theCFO. In general, the uncertainty of a parameter means the range ofvalues for such parameter that comprises all or substantially all of thelikely potential errors in the estimation or determination of thatparameter. With respect to the CFO compensation term in particular, thefrequency search space, or the CFO bandwidth of uncertainty, as referredto herein, is determined by the uncertainty of the estimated value ofthe CFO compensation term. According to yet another embodiment, acombination of the foregoing methods of determining the CFO compensationterm may be used. However, it is understood that any suitable method, orcombination of methods, of determining the CFO compensation term may beused without departing from the scope of the present invention.

In situations where direct CFO extraction identifies at least one butless than four satellite CFOs, it is possible that the signal strengthat the ranging receiver of one or more of the other in-view satellitesmay be significantly less than the signal strength at the rangingreceiver of the satellites identified by direct CFO extraction, and thestrength of the correlation peaks obtained from the signal samples maybe similar to the strength of cross-correlation peaks at certain CFOvalues resulting from the correlation of signals from satellitesidentified by direct extraction with the Gold codes of other satellites.The CFO values or “cross-correlation frequencies” at which suchcross-correlation peaks may occur may be mathematically predicted. Atstep 1624, the cross-correlation frequencies may be determined by knownmethods; and such methods either eliminate such CFO values from itsanalysis or causes the “false” correlations that may be produced at suchfrequencies to be ignored.

At step 1626, the ranging receiver 14 begins to process the samples bycompensating the samples for the CFOs. It will be understood that, inother embodiments, the CFO correction may be performed at differentstages of the method without departing from the scope of the presentinvention. In another embodiment, using the method described above inconnection with FIG. 8A and steps 800 through 838, the ranging receiver14 may form substacks from the received signal and may compensate thesamples for the CFOs as described in steps 812 through 824. It will beunderstood: (i) that if such substacks are formed, with a number ofepochs, P, per substack, then a result of the substack formation is thecreation of a one-epoch wide linear sum; and (ii) that, in subsequentsteps described herein, references to epochs may also apply to the oneepoch wide linear sums formed by such substacks.

At step 1628, the ranging receiver 14 determines the epoch (or theone-epoch long substack, as the case may be) of the received signalsample that is most likely to correspond to the first epoch of the PMDSfor each of the satellites 12 and selects the segment of the receivedsignal sample that follows the estimated first epoch and is equal inlength to the length of the PMDS. In one embodiment this most likelyepoch is the epoch which is determined on the assumption that the clockerror in the range receiver real-time clock 232 is zero and the error inthe estimated propagation times of the signals from the satellites 12 tothe ranging receiver 14 are also zero. However, the ranging receiver 14may use other methods or criteria to determine the most likely or firstsuch epoch to test, without departing from the scope of the presentinvention.

At step 1630, the ranging receiver 14 multiplies out the biphase messagedata modulation in the selected segment of the received signal sample byaligning the selected segment of the received signal sample with thereplica of the PMDS held by the ranging receiver 14 and multiplying eachsignal sample value of the selected segment of the received signalsample by the modulation sign of the corresponding epoch of the replicaof the PMDS held by the ranging receiver 14 or by any other appropriatemethod. If the PMDS includes or encompasses any bits for which themodulation is not predetermined, the multiplication factor correspondingto such bits, or the modulation sign of the corresponding epochs of thereplica of the PMDS, is set to zero. When the epoch selected in step1628 corresponds to the first epoch of the PMDS for a given satellite12, then this multiplication process removes the message data modulationfrom the selected segment of the received signal sample. When the epochselected in step 1628 is separated by no more than one or two epochsfrom the first epoch of the PMDS for such satellite 12, then thismultiplication process removes substantially all of the message datamodulation from the selected segment of the received signal sample.

At step 1632, the ranging receiver 14 linearly combines, or stacks, thesamples comprising the modulation-adjusted selected signal samplesegment into a single epoch duration result for each satellite 12.However, this and other steps may be omitted without detracting from thescope of the present invention.

At step 1634, the ranging receiver 14 correlates the Gold codes for thesatellites 12. According to one embodiment, the ranging receiver 14correlates the Gold codes by Fourier transform. For this embodiment, theFourier transform of each CFO-compensated stack of samples is multipliedby the Fourier transform of the time-reversed series of the Gold codefor a satellite 12 (sampled at the same rate as the pseudorange samplesand stored in memory 216 or 220). However, it is understood that anysuitable method of correlation may be employed without departing fromthe scope of the present invention. The product may then be compensatedfor time-dilation by complex vector multiplication in the frequencydomain before it is inverse-Fourier transformed to yield thetime-dilation compensated pseudorange time sequence, or the product maybe inverse-Fourier transformed to yield the un-compensated pseudorangetime sequence, which is compensated for time dilation byelement-shifting, as described in FIG. 13C, at step 1636. However, it isunderstood that any suitable method of compensation for time dilationmay be employed without departing from the scope of the presentinvention. However, it is understood that this step 1636 may be omittedwithout detracting from the scope of the present invention.

At decisional step 1638, a determination is made regarding whether acorrelation peak exists in any of the pseudorange time sequences that issufficiently above a noise-background threshold such that it may bedistinguished, in a statistically significant way, from the backgroundnoise. According to one embodiment, a correlation peak is sufficientlyabove the noise-background threshold when the correlation peak is atleast 6 dB above the noise-background threshold. However, it will beunderstood that a correlation peak may be sufficiently above thenoise-background threshold when the correlation peak is any suitablelevel above the noise-background threshold. If such a peak does notexist for any of the pseudorange time sequences, the method follows theNo branch from decisional step 1638 to decisional step 1640.

At decisional step 1640 a determination is made regarding whether all ofthe alternative selections for the first epoch of the PMDS in step 1628have been selected and tested or whether more alternatives for the firstepoch of the PMDS in step 1628 remain to be selected and tested. In oneembodiment, all alternatives have been tested when every epoch or set ofepochs has been tested. A set of epochs may comprise a substack group.If no more alternative selections for the first epoch remain to beselected and tested, this indicates either that the signals from thesatellite at the ranging receiver 14 are too weak to be used or thatdifferent CFO compensation terms need to be tested and the methodfollows the No branch from decisional step 1640 to decisional step 1642.

At decisional step 1642 a determination is made whether different CFOcompensation terms, or alternative CFO's in step 1622 need to be tested.If different CFO compensation terms need to be tested, the methodfollows the Yes branch from decisional step 1640 and returns to step1622 and the ranging receiver 14 selects new CFO compensation terms. Inone embodiment, the newly selected CFO compensation term is chosen to bethe term that, among those terms that have not yet been selected, isclosest to the first term that was selected and is separated, by thesize of a frequency bin, from a term that has previously been selected,and lies within the permitted frequency search space. However, othersuitable methods of selecting a new CFO compensation term may be usedwithout detracting from the scope of the present invention. If atdecisional step 1642 it is determined that different CFO compensationterms do not need to be tested, this indicates that the signals from thesatellite at the ranging receiver 14 are too weak to be used. In thissituation, the method follows the No branch from decisional step 1642 tostep 1644. At step 1644, the ranging receiver 14 sets a flag to indicatethat the signal is too weak and returns to step 1600 where the rangingreceiver 14 reverts to the low-power standby condition and waits foranother trigger. In one embodiment, the ranging receiver 14 may repeatthe process one or more times with new signal samples before setting aflag to indicate that the signal is too weak and returning to step 1600;and in repeating the process in this manner it may utilize anyinformation obtained during the processing of any previous samples. Forexample, satellite, pseudorange range, range, clock time or otherinformation from a failed or other attempt may be used in a laterprocess.

Returning to decisional step 1640, if more alternative selections forthe first epoch of the PMDS in step 1628 remain to be selected andtested, the method follows the Yes branch from decisional step 1640 tostep 1628 and selects an alternative selection for the first epoch ofthe PMDS. In one embodiment, the newly selected first epoch is chosen tobe the epoch that, among those epochs that have not yet been selected,is closest to the first epoch that was selected and is adjacent to anepoch that has previously been selected.

Returning to decisional step 1638, if a correlation peak exists in anyof the pseudorange time sequences that is sufficiently above anoise-background threshold, the method follows the Yes branch fromdecisional step 1638 to step 1646.

At step 1646, a multi-path correcting centroid calculation is applied todetermine a substantially exact location of the center of each of thepeaks based on techniques that compensate for the distortion of eachpeak's shape by the presence of multi-path signals occurring near thecorrelation peak. However, it will be understood that other methods mayalso be used to compensate for the distortions caused by multi-pathsignals without departing from the scope of the present invention.

At step 1648 the ranging receiver clock time that corresponds to thetime of arrival at the ranging receiver 14 of the epoch selected as thefirst epoch of PMDS in the received signal sample that resulted inobtaining a pseudorange peak in step 1638 is recorded as thetime-of-arrival (TOA) of the PMDS at the ranging receiver for thespecified satellite 12. This TOA comprises the actual clock time of theranging receiver 14 at which the PMDS, with a precisely known time oftransmission from the satellite 12, was received at the ranging receiver14 and is comprised of a specified millisecond of the clock of theranging receiver 14 and the fraction of the next millisecond,corresponding to the pseudorange value. The difference between this TOAand the precisely known GPS time of the transmission of the PMDS by thesatellite 12 is equal to the propagation time of the signal form thesatellite to the ranging receiver 14, and corresponds to the rangebetween the satellite 12 and the ranging receiver 14. This measurementof the TOA, or the propagation time or the range contains an error equalto the error in the clock of the ranging receiver. However when thedifference between such values, known as the time difference of arrival(TDOA) in the case of the TOA, is determined for any pair of satellites,this error is precisely and completely eliminated. Thus, the TDOA valuesfor the in-view satellites 12 may be used, along with conventional TDOAtechniques and algorithms, such as hyperbolic multilaterationalgorithms, to determine the geolocation of the ranging receiver 14.

At decisional step 1650, a determination is made concerning whether thecorrelation peak identified in step 1638 is the first such correlationpeak to be identified by the ranging receiver 14. If the correlationpeak is the first such correlation peak to be identified by the rangingreceiver 14, the method follows the Yes branch to step 1652.

At step 1652, the ranging receiver 14 may make adjustments andcorrections to certain types of calibration information held by theranging receiver 14, for the purpose of reducing the required processingtime to obtain pseudorange, range or time-of-arrival information for theremaining selected in-view satellites 12. The calibration information orfile may be stored in the ranging receiver 14. In one embodiment theranging receiver 14 may reset its clock such that the receiver clocktime at the beginning of the signal sample segment that produced thecorrelation peak is equal to the known GPS time of the PMDS plus theestimated propagation time of the signal from the satellite to theranging receiver 14; and the clock of the ranging receiver 14 would thenbe accurate to within the approximately 22 milliseconds range ofuncertainty of the propagation time for the propagation of the signalfrom the satellite 12 to the ranging receiver 14. The ranging receiver14 would then amend the formula used in step 1614 to determine the sizeof the signal sample segment to be collected and may now clear from itsmemory any part of the signal sample that was originally collected instep 1620 and is no longer required. This would reduce the size of thesignal sample to be processed from the size described in step 1618 tothe sum of: (i) the length of the PMDS; plus (ii) two times theapproximately 22 milliseconds of propagation time uncertainty for thepropagation of the signal from the satellite to the receiver. This wouldreduce the number of possible alternative selections for the first epochof the PMDS in step 1628 for all of the selected in-view satellites 12after obtaining the pseudorange, range or time-of-arrival informationfor the first of the selected in-view satellites 12.

At step 1654, the ranging receiver 14 records the CFO value thatresulted in obtaining the correlation peak and determines the estimatedDoppler shift for the same satellite 12 using geometric methods asdescribed in step 1608. The ranging receiver then determines thedifference between the two foregoing values and uses the resulting valueas the value at which to reset the receiver frequency bias. The rangingreceiver then uses this updated receiver frequency bias to recalculateand amend the CFO of each of the remaining in-view satellites for whichthe CFO was originally determined, in step 1622, by geometric methods.The method then returns to step 1638 to obtain correlation peak valuesfor additional in-view satellites.

Returning to decisional step 1650, if the correlation peak identified instep 1638 is not the first such correlation peak to be identified by theranging receiver 14, the method follows the No branch from decisionalstep 1648 to step 1656. However, in an alternative embodiment, themethod may follow the Yes branch from decisional step 1648 to step 1652and make further refinements to the adjustments previously made in steps1652 and 1654. For example, clock synchronization and frequency searchspace may be further refined.

At decisional step 1656, a determination is made concerning whether thepseudorange, range or time-of-arrival information has been obtained frompseudorange peaks identified for at least a specified minimum number ofsatellites. According to one embodiment, the minimum number is four.However, it will be understood that the specified minimum number maycomprise any suitable number. If the specified minimum number has notbeen found, the method follows the No branch from decisional step 1656and returns to step 1622. However, if the specified minimum number hasbeen found, the method follows the Yes branch from decisional step 1656to step 1658.

At step 1658, the ranging receiver 14 sends or otherwise providesranging data or information for each of the carriers detected from theconstellation of satellites 12 to the geolocation processor 24 forcalculation of the geolocation of the ranging receiver 14. Informationmay be provided at any or multiple points of the process by supplying,storing, sending, holding or otherwise making it available. According toone embodiment, the ranging data comprises the estimate of the TOA, theGPS time of transmission of the PMDS, the satellite ID for eachsatellite 12 and/or any other suitable data.

At step 1660, the ranging receiver 14 or other requesting applicationreceives the geolocation of the ranging receiver 14 from the geolocationprocessor 24, after which the method returns to step 1600 where theranging receiver 14 reverts to the low-power standby condition and waitsfor another trigger. According to another embodiment, all of thecalculations of geolocation are performed in the ranging receiver 14.The ranging receiver 14 then may then send the geolocation of theranging receiver 14 to the geolocation processor or other requestingapplication.

In the present embodiment, when, in step 1640, the method returns tostep 1628 to select an alternative selected first epoch of the selectedsignal sample segment, the method then repeats the process ofassembling, demodulating and integrating the selected signal samplesegment in steps 1630 and 1632 before performing the correlation in step1634. It will be understood that the results of the prior performance ofsuch steps 1628 through 1632 may be stored and utilized in subsequentrepetitions of such steps, without departing from the scope of thepresent invention.

An objective of this process, in one embodiment, is to repeat thecorrelation step for the same sized group of epochs from the signalsample set, but with the beginning epoch displaced from the previouslyassembled group by a specified number of epochs (equal to the number ofepochs per substack), which we may refer to as the step size.Significant processing time may be saved because it is not necessary torepeat the original task of forming the stack from scratch. Instead, itis possible to make adjustments to the previously formed stack toachieve the same result. The new stack formation begins with thefrequency-corrected and sign-adjusted and substacked (if applicable)epochs from the previously formed stack sum. For example, in determininga new integration sum in step 1632, an alternative embodiment may modifya previous result of this step 1632 by adding or subtracting the valuesfor only those components of the new integration sum for which themodulation sign has changed and by adding or subtracting the valuesrelating to epochs or substacks of epochs that are added to or removedfrom, respectively, the previous integration stack, without departingfrom the scope of the present invention. For example, in the simplestcase when the step size is equal to one epoch, the method: (i) removesthe first epoch from the stack sum; (ii) adjusts the sign of every19^(th) and 20^(th) epoch of the remaining epochs in accordance with thepolarity sequence of the known bits of the PMDS; and (iii) frequencycorrects the epoch of the selected signal sample that follows the lastepoch represented in the previous stack sum and adds thefrequency-corrected epoch to the stack sum with the appropriate signchange, if required. This completes the formation of the nextfrequency-corrected, sign-adjusted stack sum, which may then becorrelated with the Gold code of the specified satellite. The same typesof tasks may be applied when successive stacks are shifted by a stepsize of more than one epoch; and it will be understood that the methodis intended to be applicable to a step size equal to any number ofepochs without departing from the scope of the present invention.

According to the illustrated embodiment, the CFO compensation process ofstep 1626 is implemented by compensating the signal samples by theappropriate frequency offset, and satellite Doppler-rate change. In analternative embodiment the reference replica of the Gold code beingcorrelated may be compensated by the same amount. Since the Gold codereplica is smaller than the signal samples, it may be morecomputationally efficient to compensate the replica, than to compensatethe signal samples.

It will be understood that the CFO correction step in step 1626, whichin the current embodiment is performed on each signal sample subsequentto the process of sample collection in step 1620, may, in differentembodiments of the present invention be performed on the signal samplesat later stages in the method, without departing from the scope of thepresent invention, and that one of the purposes of doing so is for thepurpose of minimizing the complexity of the computational process andreducing the processing time, or improving the overall operatingefficiency and performance of the method in selected circumstances. Forexample, the later stages of the method, where such CFO correction may,in different embodiments, be performed, may be after each epoch, orafter the formation of each substack and the integration of the substackinto a single-epoch linear sum, or after the demodulation andintegration of the selected signal sample segment in steps 1630 and1632, without departing from the scope of the present invention.

A reason for the formation of substacks, as set forth in step 1626, isto reduce the computational complexity and processing time. However,some loss of processing gain may occur when the value of P, the numberof epochs per substack, as described in FIG. 8A and step 1626, is set ata value that is greater than one.

When the correlation peak is obtained for the first satellite and theinformation obtained from the first satellite is used to reduce the sizeof the signal sample segment in step 1618, the uncertainty in thepropagation time for other satellites may be reduced to less than the 22milliseconds referred to above, by comparing the orbital information forthe first satellite, contained within the almanac and ephemeris files inthe ranging receiver, with the orbital information of other in-viewsatellites and applying geometric analytical techniques.

FIG. 17 is a flow diagram illustrating a method for synchronizing thetime setting of the clock in the receiver of FIG. 1, 2, or 3 with theGPS time in the satellite clocks by determining a geolocation of thereceiver (which location includes a built-in error attributable to theerror in the receiver clock and the consequential error in the locationsof the satellites derived from the ephemeris or almanac information thatare used to compute the receiver location), then using that geolocationto compute the error in the receiver clock as the difference between theclock time in a satellite and the clock time in the receiver, each atthe moment of receipt from that satellite, of a predetermined messagedata bit sequence, and then repeating this procedure, if required, in aniterative process in which each iterative cycle rapidly reduces theerror in the receiver clock, all in accordance with one embodiment ofthe present invention.

Assisted-GPS, like all conventional legacy GPS devices, integrates arandom segment of the Navigation message that happens to be arriving atthe receiver from all satellites at that same time (being that time whenthe receiver is called upon to collect the signal). Because eachsatellite has a unique propagation time to the receiver, this randomsegment is a different segment of the Navigation message for eachsatellite, transmitted at a different time from each satellite andarriving at the same time at the receiver (i.e. in adifferent/different/same operation).

The present invention does not integrate a random segment of theNavigation message. It finds and integrates a specific predeterminedsegment of the Navigation message (that is transmitted from eachsatellite at one precisely known GPS time) and measures the Time ofArrival (TOA) of that precise GPS segment at the receiver at a differenttime for each satellite. Because this message segment is precisely thesame segment of the Navigation message for each satellite, it istransmitted at the same GPS time from each satellite, and arrives at adifferent time at each satellite, depending on the range of thesatellite from the receiver (i.e. in a same/same/different operation).

The TOA represents the GPS time of transmission of the segment (the samefor all satellites) plus the total propagation time from the satelliteto the receiver and further adjusted (plus or minus) by the error of thereceiver clock (the same for each satellite).

Such propagation time includes both the whole number of milliseconds ofthe propagation time and the last fraction of a millisecond of thepropagation time that comprises what is known, in conventional legacyGPS, as the pseudorange value. Assisted-GPS, like all conventionallegacy GPS devices, measures only the pseudorange component of thepropagation time. It does not measure TOA and therefore cannot performthe foregoing clock error elimination. Rather, it must use some externalsource to synchronize its clock. In the present invention, the conceptof pseudorange has no relevance and there is no attempt to directlymeasure it.

The error in the receiver clock may be unknown and could be any amountof time. Nevertheless, regardless of the amount of this error, the TOAof the selected message from each satellite in the same signal sampleincludes precisely the same clock error. Therefore, when we compute thedifference between the TOA values (the TDOA) of any satellite pair, theclock error is completely eradicated.

Conventional GPS, and each of its legacy forms including Assisted-GPS,measures pseudorange rather than total propagation time. It has noknowledge of the number of whole epochs (or milliseconds) of propagationtime that precede the final pseudorange component. The navigationalgorithm must apply intelligent guesswork and trial-and-error to find acombination of “whole numbers” of epochs for each of the in-viewsatellites that will produce a geolocation solution that is locatedsomewhere on the surface of the earth. An error of one millisecond inthe propagation time (at the speed of light) is equivalent toapproximately 300 kilometers of location error. Thus, it is important toget the “whole number resolution” guesswork right and commerciallyavailable navigation solutions are clearly capable of this. This methodof conventional GPS obviously cannot determine the location of airbornereceivers that are not located on the surface of the earth. However, thepresent invention is not encumbered in this manner and is entirelysuitable for airborne receivers provided that a sufficient number ofsatellites are in view.

Consequently, the receiver clock error does not contribute error togeolocation solution through errors in TDOAs and range differences.However, in the same way as for conventional GPS, it may contribute toerrors in the geolocation solution that result from errors in thesatellite positions that are obtained from ephemeris or almanac data andthe receiver clock time.

The process for synchronizing the receiver clock begins at step 1700where the ranging receiver 14 identifies a known message data sequencethat is referred to as the predetermined message data segment (PMDS).The PMDS is a message data sequence that is common to all of thesatellites 12 (i.e. it is present in precisely the same bit sequence, itis located in the same section of the transmitted signal of each andevery satellite 12, and it is transmitted by all of the satellites 12 atprecisely the same moments in GPS time from each satellite 12).

At step 1702, the ranging receiver 14 digitally records a segment of thereceived signal. According to the illustrated embodiment, the length ofthe recorded segment is six (6) seconds, this being the length of onesubframe of the GPS signal structure. However, it will be understoodthat the ranging receiver 14 may record any suitable length of signalsample without departing from the scope of the present invention. And itwill be further understood that, without departing from the scope of thepresent invention, the ranging receiver 14 may autonomously adjust thelength of the recorded signal sample depending on the information thatit has acquired that enables it to predict the approximate times ofarrival of the PMDS at the ranging receiver 14 from various ones of thesatellites 12.

At step 1704, the ranging receiver 14 analyzes the recorded signalsample using methods that are comprised of methods described hereinaboveand in U.S. Pat. No. 7,154,437, which is hereby incorporated herein byreference. In such manner, the ranging receiver 14 determines andrecords, for each of at least four in-view satellites 12, the time ofarrival (TOA), as measured by the internal clock of the ranging receiver14, of the PMDS identified in step 1700, of which TOA is referred to asthe “Receiver Clock PMDS Arrival Time”. The ranging receiver 14 thendetermines the difference in the times of arrival (the TDOA) for each ofat least three unique pairs of satellites 12, and, from this informationand the ephemeris or almanac data, computes the geolocation coordinatesof the ranging receiver 14, all in accordance with methods describedhereinabove and in U.S. Pat. No. 7,154,437 and using algorithms andmathematical computations that are well known in the art.

The geolocation solution for the TDOA for one pair of satellites wouldbe a three-dimensional curvilinear surface. rotating symmetricallyaround an axis defined by the vector between the two satellites.

The geolocation solution for the two unique TDOAs derived from threesatellites would be a two-dimensional line drawn at the intersection ofthe two three-dimensional surfaces described above.

The geolocation solution for the three unique TDOAs derived from foursatellites would be a point of intersection between: (i) thetwo-dimensional line of intersection described above; and (ii) theadditional three-dimensional surface generated as the geolocationsolution for the third unique pair of satellites resulting from theintroduction of the fourth satellite.

In the absence of the fourth satellite, it would be possible to find anintersection between: (i) the two dimensional line solution generated bythe first three satellites (and two unique pairs of satellites); and(ii) the surface of the planet. If the receiver could receive signalsfrom satellites that were below the horizon, or on the opposite side ofthe planet, it would be theoretically possible for there to be, incertain special geometrical circumstances, as many as four possiblesolutions on the surface of the earth for this geometrical analysis.However, all but one of these solutions, if they could even appear,would typically be eliminated as unfeasible based on: (a) therequirement that the solution must be in the sight of each of thein-view satellites contributing to the solution; or (b) other logicalalgorithms.

The search for a solution that is located on the surface of the earthshould not be confused with the whole number resolution problem that isthe bane of conventional GPS. In that case, the receiver only measuresthe pseudorange for the satellite, which is the last fraction of anepoch of the range on top of the whole number of epochs of the range. Itis like telling the time of day by announcing only the hour, and not theminutes or seconds. The geolocation computation must then find acombination of whole numbers of epochs, one for each in-view satellite,that would produce a geolocation result on the surface of the planet.

In our case, the use of the geometry of the earth is for a deterministicgeometrical calculation, not for the selection of one feasible solutionfrom a host of possible solutions.

Based on the foregoing, it might be appropriate to reflect the factthat, while the three TDOAs from three unique pairs of in-viewsatellites, from four satellites, will produce an explicit geolocationsolution, it will be understood that, in another embodiment, any numberof additional satellites may be employed to reduce the uncertainty ofthe geolocation solution, without departing from the scope of thepresent invention, and that, in yet another embodiment, a geolocationsolution may be obtained with only three in-view satellites, againwithout departing from the scope of the present invention.

According to the illustrated embodiment at step 1706, the rangingreceiver 14 locates the HOW Word in the signal sample that is thenearest HOW Word that precedes the PMDS for that satellite 12 based onthe known location of the PMDS in the satellite message subframe and theknown relative position of the HOW Word in the subframe. And it will befurther understood that the ranging receiver 14 may, in an alternativeembodiment, locate the HOW Word in any other suitable subframe of thereceived signal sample and may alternatively locate the HOW Word thatnext follows the PMDS, or the HOW Word in any subsequent or precedingsubframe of the received signal sample, without departing from the scopeof the present invention. Upon locating the HOW Word, the rangingreceiver 14 reads the GPS time encoded within it (the “HOW-Time”). It isalso understood that the ranging receiver 14 may select different HOWWords for different satellites, as long as the amount of the separationof the selected HOW Word from the PMDS is known in each case, withoutdeparting from the scope of the present invention.

At step 1708, the ranging receiver 14 determines the GPS time oftransmission of the selected PMDS from each satellite 12, which time isreferred to as the “PMDS Transmission GPS-Time”, by adding to theHOW-Time the known time difference between that HOW Word and theselected PMDS. The result of this determination should be the same foreach satellite 12 and the ranging receiver 14 may make the determinationfrom only one of the in-view satellites 12 or make and compare theresults of the determination from more than one of the in-viewsatellites 12.

At step 1710, the ranging receiver 14 computes, for each in-viewsatellite 12, the propagation time of the PMDS from the satellite 12 tothe ranging receiver 14, which is referred to as the Propagation Time,based on the known position of the satellite 12 as furnished by theephemeris or almanac data, the known position or estimated approximateposition of the ranging receiver 14 as determined in step 1704 above,and the speed of light.

At step 1712, the ranging receiver 14 determines, for each satellite,the GPS time of the receipt of the PMDS at the ranging receiver 14,which is referred to as the “GPS Clock PMDS Arrival Time”, by adding thePropagation Time for that satellite 12 (as determined in step 1710above) to the PMDS Transmission GPS-Time determined in step 1708 above.

At step 1714, the ranging receiver 14 calculates the Receiver ClockError as the difference between the GPS Clock PMDS Arrival Timedetermined in step 1712, for a given satellite, and the Receiver ClockPMDS Arrival Time determined in step 1704 for that same satellite. Inone embodiment, the ranging receiver 14 may determine the Receiver ClockError from the information pertaining to only one in-view satellite 12.In yet another embodiment, the ranging receiver 14 may determine theReceiver Clock Error based on one or more of the other in-viewsatellites 12 and may further analyze the results from each satellite 12(which results should be approximately the same), using mathematical andstatistical techniques that are well known in the art, in order todetermine the best estimate of the Receiver Clock Error of the rangingreceiver 14.

At step 1716, the ranging receiver 14 adjusts its internal clock by anamount equal to the Receiver Clock Error that was determined in step1714.

At step 1718, the ranging receiver 14 makes a determination whether theamount of the adjustment made to the internal clock of the rangingreceiver 14 in step 1716 is greater than a prescribed maximum amountthat may be determined by the desired level of accuracy, or the maximumacceptable error that is acceptable in the internal clock of the rangingreceiver 14 for the purpose of determining the geolocation coordinatesof the ranging receiver 14, or for any other purpose. According to theillustrated embodiment, the maximum acceptable prescribed amount of sucherror or adjustment is equal to one second. However, it will beunderstood that this prescribed maximum amount may be any suitableamount without departing from the scope of the present invention. If theclock correction in step 1716 is greater than the prescribed maximumamount, the method follows the YES branch from decision step 1718 andreturns to step 1702 in an iterative repetition of the method. If theclock correction in step 1716 is not greater than the prescribed maximumamount, then the method follows the NO branch from decision step 1716and ends.

In order to illustrate how the method of the present invention serves torapidly reduce the error in the internal clock of the ranging receiver14, the following example is presented.

Consider a receiver clock that has an initial unknown clock error of T1seconds. The TDOA has no clock error, because it is the differencebetween two “fixed-error” TOA values, for two separate satellites,extracted from the same signal sample.

To determine receiver location from the TDOAs, we must know the preciseposition of each satellite. The ephemeris or almanac information tellsus the position of the satellite at a given, precise point of time.Since the satellite is moving relative to the receiver, this relativespeed multiplied by the error in the receiver clock is equal to theerror in the satellite's position, which, if repeated in all thesatellites in view, corresponds to an equal error in the navigationsolution for the location of the receiver (E1=the error in the firstestimate of the receiver position). The relative speed of the satelliteand the receiver may vary between plus or minus a maximum relative speed(M) of 800 meters/second. Thus, the maximum value of the error in theinitial position calculation will be E1 _(MAX)=T1*M.

We can now use the initially computed position of the receiver, with itsinherent error E1, along with the estimated position of the satellite tocompute the propagation time (P) from the satellite to the receiver bycomputing the distance between satellite and receiver (the “range”) anddividing by the speed of light. This gives us the GPS time (T2) of thespecific known segment of the Navigation message (the PMDS) identifiedfor that satellite and thereby resets the receiver clock precisely toGPS-synchronized time. The error in this time estimate will be the errorin the “range” divided by the speed of light (0.2993×10⁹ meters persecond). The maximum error in the range will be approximately equal toE1 _(MAX), the maximum error in the calculation of the location of thereceiver. The maximum error in the GPS time estimate will therefore berepresented by:

T2_((ERROR-MAX)) =E1_(MAX)/(0.2993×10⁹)=T1*M/(0.2993×10⁹)

and the reduction of the receiver clock error is by a factor that isequal to:

T1/T2_((ERROR-MAX))=0.2993*10⁹ /M

By way of example, if the initial clock error is one half of a second,E1 _(MAX) is, as a result, 400 meters and the maximum error in the valueof T2 (the new clock setting for the receiver clock) is only 1.336microseconds or approximately one seven-hundredth of a millisecond. Evenif the receiver clock's initial error was as much as seven seconds, i.e.more than an entire subframe, the value of T2 would be in error by onlyabout one fiftieth of one millisecond.

We may now use the new value for T2 in the navigation algorithm, alongwith the ephemeris information, to re-compute the position of thereceiver. Note that an error of one millisecond in the value of T2 wouldproduce a position error (E2) of only 0.8 meters. And an error of onlyone microsecond in the value of T2 would produce a position error (E2)of only 0.8 millimeters.

This improvement would be by a factor equal to (a) the speed of lightdivided by (b) the relative speed of the satellite and the receiver.Given a maximum relative speed of 800 meters per second, the improvementfactor will be at least 3.74 million times.

The foregoing process may be iterated any number of times. However theimprovement in the accuracy that results from each iteration is so greatthat it is unlikely that it would be necessary to repeat the processmore than one time.

Although the present invention has been described with severalembodiments, various changes and modifications may be suggested to oneskilled in the art. It is intended that the present invention encompasssuch changes and modifications as fall within the scope of the appendedclaims. For example, although the steps set forth herein have beendescribed as being performed in a certain order, it will be understoodthat many of such steps may be performed in a different order, withoutdeparting from the scope of the invention. In addition, although certainfunctions are described herein as being performed by the rangingreceiver 14 or other device, it will be understood that many of suchfunctions may also be performed by other components without departingfrom the scope of the invention.

What is claimed is:
 1. A method for synchronizing a time setting of aclock in a receiver with a GPS time in a clock of a plurality ofsatellites, comprising: receiving a signal from each of the plurality ofsatellites, each signal including a predetermined message data sequence;identifying a time of receipt and a time of transmission of eachpredetermined message data sequence; determining a geolocation of thereceiver from each time of receipt; computing an error in the receiverclock using the geolocation of the receiver, the time of receipt, andthe time of transmission of the predetermined message data sequence. 2.The method of claim 1, wherein the error is a difference between a clocktime in a satellite and a clock time in the receiver determined at amoment of receipt from that satellite of the predetermined message datasequence.
 3. The method of claim 1, further comprising: resetting thereceiver clock by an amount of the error.
 4. The method of claim 1,further comprising: detecting whether an amount of the error is greaterthan a desired threshold; repeating the determining, receiving, andcomputing steps in response to the error being greater than the desiredthreshold.
 5. The method of claim 1, wherein the geolocation includes abuilt-in error attributable to the error in the receiver clock and aconsequential error in locations of the satellites.
 6. The method ofclaim 5, wherein the locations of the satellites are derived fromephemeris or almanac information used in computing the receivergeolocation.
 7. The method of claim 6, further comprising: determining asignal propagation time from each satellite to the receiver from thelocations of the satellites and the geolocation of the receiver.
 8. Themethod of claim 1, wherein the time of transmission is identified byidentifying a HOW word from the signal and extracting a time from theHOW word.
 9. The method of claim 1, wherein the error is computed usinga given one of the satellites.
 10. The method of claim 1, wherein theerror is computed by analyzing results from all of the satellites andperforming statistical techniques to determine a best estimate of theerror.